这很奇怪,但ExpectedExceptionAttribute突然之前退出了我的工作.不确定出了什么问题.我正在和VS 2010和VS 2005并排运行.它在VS 2010中不起作用.这个测试应该通过,但它失败了:
[TestMethod] [ExpectedException(typeof(ArgumentNullException))] public void Test_Exception() { throw new ArgumentNullException("test"); }
有任何想法吗?这真的是sux.
解决方法
不要复活一个死去的线程,但是当我突然发生这种情况时,我遇到了这个,以防它可以帮助别人.我终于找到了问题所在,这可能与Jon发现的内容有关.只有在项目被识别为TestProject时,ExpectedException属性才会起作用. (不仅仅是.Net程序集)
卸载项目,编辑csproj文件并检查以下设置是否存在:
<ProjectTypeGuids>{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
(假设VS2010项目)
重新加载项目并重建. ExpectedException测试现在应该通过.
我们在将测试从NUnit标准化为MSTest(谢谢TFS CI Build)时遇到了这个问题,并发现在替换Assert后,我们遇到了问题.Throws<>美丽的简约& [ExpectedException(Type)]废话的灵活性,(更不用说丢失[TestCase()]!)ExpectedException测试失败了.使用ExpectedException切换回NUnit,没问题,MSTest拒绝运行它.
毋庸置疑,在找到:http://blog.shawnewallace.com/2011/02/running-nunit-tests-in-tfs-2010.html之后,我将推动让NUnit回归