不是要复活死线,而是突然发生在我身上时遇到了这个,以防它可以帮助其他人。我终于找到了问题所在,这可能与 Jon 的发现有关。ExpectedException 属性似乎仅在项目被识别为 TestProject 时才起作用。(不仅仅是一个 .Net 程序集)
卸载项目,编辑 csproj 文件并检查是否存在以下设置:
<ProjectTypeGuids>{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
(假设VS2010项目)重新加载项目并重建。ExpectedException 测试现在应该通过了。
我们在将测试从 NUnit 标准化到 MSTest 时遇到了这个问题(感谢 TFS CI Build),发现在用 [ExpectedException(Type)] 废话替换 Assert.Throws<> 美丽的简单性和灵活性之后,(更不用说丢失 [TestCase( )]!) ExpectedException 测试无缘无故失败。使用 ExpectedException 切换回 NUnit,没问题,MSTest 拒绝运行它。
不用说,我会努力让 NUnit 回来,在找到:http: //blog.shawnewallace.com/2011/02/running-nunit-tests-in-tfs-2010.html