【发布时间】:2020-02-16 04:31:34
【问题描述】:
我正在使用 C#、MSVS 2015 和 .Net 4.6.1 使用 MSTest 编写一些单元测试。
这一行:
Assert.ThrowsException<ArgumentOutOfRangeException>( () =>
select.AllSelectedOptions[0]
);
因编译错误而失败:
CS0117 'Assert' 不包含 'ThrowsException' 的定义
我的命名空间是Microsoft.VisualStudio.TestTools.UnitTesting(在 MSVS 中创建单元测试项目时的默认名称)。
根据文档,Assert.ThrowsException(Action) 应该存在。但我在 Intellisense 中看不到它......而且我得到了编译错误。
我尝试了几个不同版本的 MSVS(MSVS 2015 和 MSVS 2019)和几个不同版本的 MSTest。
问:有什么想法可能是错的吗?
正如 Clint 所说的 below,我需要从 NuGet 安装 MSTest v2 才能在 MSVS 2015 中使用 Assert.ThrowsException<T>()。
但是在这样做之后,MSVS 不再找到我的任何测试:
MSVS > 测试 > 全部运行(或“测试 > 调试 > 所有测试”):
------ Discover test started ------
========== Discover test finished: 0 found (0:00:01.127375) ==========
有什么建议吗?
【问题讨论】:
-
假设你注释掉这个检查,其他
Assert.xxx()调用是否有效?Assert是来自Microsoft.VisualStudio.TestTools.UnitTesting的实际类,还是偶然一个名为Assert的不同类?哪个版本的库链接在您项目的“参考”部分?
标签: c# mstest vs-unit-testing-framework