C# MSTest:CS0117“Assert”不包含“ThrowsException”的定义

C# MSTest:CS0117“Assert”不包含“ThrowsException”的定义,c#,mstest,vs-unit-testing-framework,C#,Mstest,Vs Unit Testing Framework,我正在用MSTest编写一些单元测试,使用C、MSVS 2015和.Net 4.6.1 这一行: Assert.ThrowsException<ArgumentOutOfRangeException>( () => select.AllSelectedOptions[0] ); 有什么建议吗?您需要使用[MSTest V2]才能断言.ThrowsException 从VS2017开始,机箱内单元测试项目模板仅使用MSTest V2 现在您已使用VS2015,可以从Nug

我正在用MSTest编写一些单元测试,使用C、MSVS 2015和.Net 4.6.1

这一行:

Assert.ThrowsException<ArgumentOutOfRangeException>( () => 
  select.AllSelectedOptions[0]
);
有什么建议吗?

您需要使用[MSTest V2]才能断言.ThrowsException

从VS2017开始,机箱内单元测试项目模板仅使用MSTest V2

现在您已使用VS2015,可以从Nuget安装此软件包MSTest.Test,但请确保在升级到此软件包之前删除旧的测试引用,如Microsoft.VisualStudio.QualityTools.UnitTestFramework

添加>新建测试项目>选择MSTest项目类型

在此之后,您应该能够使用Assert.ThrowsException测试并确保安装MSTest.TestAdapter


进一步

假设您注释掉此检查,其他Assert.xxx调用是否有效?Assert是Microsoft.VisualStudio.TestTools.UnitTesting中的实际类,还是碰巧是另一个名为Assert的类?您的项目参考资料部分链接了该库的哪个版本?谢谢。这是有道理的:MSVS 2015 MSTest V2中的编译错误还不存在,而且它在MSVS 2019中也失败了,因为MSVS 2019中创建的项目保留了MSTest V1依赖项。我从NuGet安装了V2.1,删除了旧的V1引用。。。现在一切都已准备就绪。耶!。新问题:MSVS>运行所有测试>发现测试已完成:0发现0:00:01.127375。它再也找不到任何测试了:我从零开始删除并重新构建了所有测试,但仍然无法继续:Q:有什么建议吗?啊,好的,看起来你需要安装MSTest.TestAdapterBingo:就是这样。我需要安装两个NuGet软件包MSTest.TestFramework v2.1.0和MSTest.TestAdapter v2.1.0。现在一切都很好。非常感谢。
------ Discover test started ------
========== Discover test finished: 0 found (0:00:01.127375) ==========