C# ExpectedExceptionAttribute在MSTest中不工作

C# ExpectedExceptionAttribute在MSTest中不工作,c#,visual-studio-2010,unit-testing,mstest,expected-exception,C#,Visual Studio 2010,Unit Testing,Mstest,Expected Exception,这很奇怪,但是突然间,ExpectedExceptionAttribute前几天停止了为我工作。不知道出了什么问题。我正在同时运行VS 2010和VS 2005。它在VS 2010中不起作用。该测试应通过,但未通过: [TestMethod] [ExpectedException(typeof(ArgumentNullException))] public void Test_Exception() { throw new ArgumentNullException("test"); }

这很奇怪,但是突然间,
ExpectedExceptionAttribute
前几天停止了为我工作。不知道出了什么问题。我正在同时运行VS 2010和VS 2005。它在VS 2010中不起作用。该测试应通过,但未通过:

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

有什么想法吗?这真是一款sux。

我也遇到过同样的问题,但最终还是成功地让它工作了。我不太清楚怎么做,但这里有一个列表,列出了从它不起作用到它重新开始起作用这段时间我所做的事情

  • 已将正在测试的项目转换为.NET 4
  • 关闭编解码器覆盖
  • 再次打开了CodeCoverage
  • 对测试项目进行了重建

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

不是要复活一条死线,但我是在这件事突然发生在我身上时遇到的,以防它能帮助别人。我终于找到了问题所在,这可能与乔恩的发现有关。ExpectedException属性仅在项目被识别为TestProject时才有效。(不仅仅是.Net程序集)

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

<ProjectTypeGuids>{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
{3AC096D0-A1C2-E12C-1390-A8335801FDB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
(假设VS2010项目) 重新加载项目并重建。ExpectedException测试现在应该通过了

我们在将测试从NUnit标准化到MSTest(感谢TFS CI Build)时遇到了这个问题,并发现在用[ExpectedException(Type)]废话替换Assert.之后,ExpectedException测试变得非常简单和灵活,(更不用说丢失了[TestCase()!),ExpectedException测试无缘无故失败。使用ExpectedException切换回NUnit,没问题,MSTest拒绝运行它

不用说,在找到之后,我会努力把NUnit找回来:

这个帖子是在谷歌搜索中出现的,因为我今天也遇到了这个问题,但出于不同的原因,我会在这里添加另一个可能的答案

我对一些具有
[ExpectedException]
属性的函数进行了单元测试,但最近的代码更新使被测试的函数
异步
,以提高性能

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

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

    //Assert
    //ExpectedException
} 

我有另一个答案,它不需要编辑csproj文件。看来根本原因只是缺少参考资料。 我使用Microsoft.VisualStudio.TestTools.UnitTestFramework将
Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll添加到项目的参考文件中,并使用
添加了Microsoft.VisualStudio.TestTools.UnitTesting到代码文件。dll可以在中找到

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


我希望我能帮助任何人节省一些时间。

还有另一个答案。今天我将Visual Studio 2008(net35)MSTest项目升级到Visual Studio 2017(net462)。引用了一个缺少的
Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll
——在我的例子中,它就在那里,但引用指向的是旧的VS2008版本,而其余的版本已经升级。没有感叹号,没有编译错误,除了那些具有
[ExpectedException]
属性的单元测试外,所有单元测试都按预期工作


删除引用并添加当前版本(对我来说是10.0.0.0)使这些测试再次工作。

我得到了相同的结果,但找不到任何关于它的信息。其他人也有同样的问题。你是在调试还是在运行测试?嗨,史蒂夫!回答老问题没有什么丢脸的,特别是有这么好的答案!谢谢我实际上使用了MsTest内部的Nunit构造(Assert.throws;-)它在VS2012中也对我有效。但更奇怪的是:我有许多简单的类库,其中包含这个ExpectedException,它的工作方式很有魅力。即使是令人不快的项目也曾经成功过,但它突然停止了工作。
C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\PublicAssemblies\