ExpectedExceptionAttribute在MSTest中不起作用

Mic*_*cah 6 c# unit-testing mstest visual-studio-2010 expected-exception

这很奇怪,但前ExpectedExceptionAttribute几天突然停止为我工作.不确定出了什么问题.我正在和VS 2010和VS 2005并排运行.它在VS 2010中不起作用.这个测试应该通过,但它失败了:

[TestMethod]
[ExpectedException(typeof(ArgumentNullException))]
public void Test_Exception()
{
    throw new ArgumentNullException("test");
}
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?这真的是sux.

小智 12

不要复活一个死去的线程,但是当我突然发生这种情况时,我遇到了这个,以防它可以帮助别人.我终于找到了问题所在,这可能与Jon发现的内容有关.只有在项目被识别为TestProject时,ExpectedException属性才会起作用.(不仅仅是.Net程序集)

卸载项目,编辑csproj文件并检查以下设置是否存在:

<ProjectTypeGuids>{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
Run Code Online (Sandbox Code Playgroud)

(假设VS2010项目)重新加载项目并重建.ExpectedException测试现在应该通过.

从NUnit的到MSTest的标准化测试时,我们就遇到了这个问题(谢谢TFS CI构建),发现与[的ExpectedException(类型)]废话更换Assert.Throws <>美丽简洁和灵活性之后,(更不用说失去[测试用例( )]!)ExpectedException测试无故失败.使用ExpectedException切换回NUnit,没问题,MSTest拒绝运行它.

毋庸置疑,在找到后,我将推动NUnit回归:http://blog.shawnewallace.com/2011/02/running-nunit-tests-in-tfs-2010.html


Jon*_*ell 1

我也遇到过同样的问题,但最终设法让它工作。不太确定是怎么做的,但这里列出了我在它不起作用和再次开始工作之间所做的事情。

  • 将正在测试的项目转换为.NET 4
  • 关闭代码覆盖
  • 再次打开 CodeCoverage
  • 对测试项目进行了 RebuildAll

但不确定是哪个位修复了它。无论如何,希望这有帮助!