繁体   English   中英

MSTest:CS0117“断言”不包含“抛出异常”的定义

[英]MSTest: CS0117 'Assert' does not contain a definition for 'ThrowsException'

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

这一行:

Assert.ThrowsException<ArgumentOutOfRangeException>( () => 
  select.AllSelectedOptions[0]
);

因此编译错误而失败:

CS0117“断言”不包含“抛出异常”的定义

我的命名空间是Microsoft.VisualStudio.TestTools.UnitTesting (在 MSVS 中创建单元测试项目时的默认值)。

根据文档, Assert.ThrowsException(Action)应该存在。 但是我在 Intellisense 中没有看到它......而且我收到了编译错误。

我尝试了几个不同版本的 MSVS(MSVS 2015 和 MSVS 2019)和几个不同版本的 MSTest。

问:任何想法可能有什么问题?


正如下面Clint 所说,我需要从 NuGet 安装MSTest v2 ,以便在 MSVS 2015 中使用Assert.ThrowsException<T>()

但是这样做之后,MSVS 不再找到我的任何测试:

MSVS > 测试 > 全部运行(或“测试 > 调试 > 所有测试”):

------ Discover test started ------
========== Discover test finished: 0 found (0:00:01.127375) ==========

有什么建议?

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

VS2017开始,内置单元测试项目模板仅使用 MSTest V2。

现在你在VS2015 上,你可以从Nuget安装这个包MSTest.Test但确保在升级到这个包之前删除旧的测试引用,如Microsoft.VisualStudio.QualityTools.UnitTestFramework

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

在此之后,您应该能够使用Assert.ThrowsException<ArgumentOutOfRangeException>(

发现和执行测试,还要确保安装 MSTest.TestAdapter。

进一步阅读

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM