6

这很奇怪,但突然间ExpectedExceptionAttribute有一天我不再工作。不知道出了什么问题。我正在运行VS 2010和VS 2005并排。它不适用于2010年。这个测试应该通过,但它是失败的:ExpectedExceptionAttribute在MSTest中不起作用

[TestMethod] 
[ExpectedException(typeof(ArgumentNullException))] 
public void Test_Exception() 
{ 
    throw new ArgumentNullException("test"); 
} 

任何想法?这真的是sux。

+0

我收到了相同的结果,但找不到任何关于它的信息。其他人也有同样的问题。 http://stackoverflow.com/questions/2628965/expectedexception-on-testmethod-visual-studio-2010 – 2010-04-16 16:07:21

+0

你正在调试或运行测试? – Joop 2010-04-27 06:40:36

回答

1

我有同样的问题,但最终设法让它工作。不知道如何,但这是我做的事情之间的一个列表,它不工作,当它再次开始工作。

  • 转换的项目被测试.NET 4
  • 熄灭代码覆盖率
  • 转身代码覆盖率重新打开
  • 没过RebuildAll上测试项目

不知道该位固定它虽然。无论如何,希望这有助于!

12

不是为了让死亡的线程复活,而是当我突然发生这种情况时遇到了这种情况,以免它可以帮助别人。我终于找到了问题所在,这可能与乔恩发现的相关。 ExpectedException属性似乎只在项目被识别为TestProject时才起作用。 (不只是一个.NET程序集)

卸载项目,编辑的csproj文件,并检查以下设置有:

<ProjectTypeGuids>{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids> 

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

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

不用说,我将力推得到NUnit的后面,找到后:http://blog.shawnewallace.com/2011/02/running-nunit-tests-in-tfs-2010.html

1

这个线程来了个谷歌搜索,因为我遇到了这个今天过,但出于不同的原因,我会在这里添加另一个可能的anser。

我有单元测试与地方[ExpectedException]属性的一些功能,但最近代码更新所做的测试async来提高性能的功能。

这导致这些单元测试失败。简单的解决方案是,也使单元测试异步,返回任务和等待函数调用:

[TestMethod] 
[ExpectedException(typeof(Exception))] 
public async Task UnitTestAnAsyncFunction() 
{ 
    await sut.DoStuffAsync(); 

    //Assert 
    //ExpectedException 
} 
0

我有另一个答案,其中有没有需要编辑的csproj文件。似乎根本原因只是一个缺失的参考。 我在代码文件中添加了Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll到项目的参考文献和using Microsoft.VisualStudio.TestTools.UnitTesting;。DLL可以在

C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\PublicAssemblies\ 

C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\PublicAssemblies\ 

找到我希望我能帮助别人节省一些时间。