![](/img/trans.png)
[英]error CS0117: 'BindingFlags' does not contain a definition for 'GetProperty'
[英]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.