【发布时间】:2016-08-23 03:44:50
【问题描述】:
我们目前正在将我们的单元测试从使用 MSTest 迁移到 NUnit(版本 3.2.1),但在从我们的 TFS .xaml 构建定义运行 NUnit 测试时遇到问题。 TFS 构建定义使用规则“在匹配 **\*.test*.dll 的程序集中运行测试”。对于我的 NUnit 测试项目,我已经下载、安装并引用了以下 NuGet 包:
1) NUnit v3.2.1
2) NUnit3TestAdapter v3.0.10
在 VS(测试资源管理器)中执行我的测试非常有效,我认为这些步骤足以确保它们也作为 TFS 上的 CI 构建的一部分运行,但是测试永远不会执行。我在诊断输出中没有与这些测试有关的错误/警告/消息,但是我确实看到构建过程已将我的程序集检测为单元测试的候选者,因为它符合上述通配符规则 (**\*.test *.dll)。
我还尝试将 NUnit3TestAdapter 程序集放在 TFS 的构建控制器属性中定义的“自定义程序集的版本控制路径”文件夹中,但无济于事。
任何人都可以看看我是否在此过程中遗漏了一个步骤。从我在这些论坛上阅读的所有内容来看,我似乎已经做了所有必要的事情,但它们仍然没有执行。
我通过直接在包含我的 NUnit 测试的程序集上运行 MSTest,exe(这是 TFS 构建使用的)大大简化了问题。有问题的程序集将适配器和 nunit 框架都安装为 NuGet 包,但 MsTest 仍报告未找到任何测试(见下文):
C:\Users\hdav>"C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\MSTest.exe" /testcontainer:e:\MyCode\nunit\ExpectedExceptionExample\bin\Debug\ExpectedExceptionExample .dll
正在加载 e:\MyCode\nunit\ExpectedExceptionExample\bin\Debug\ExpectedExceptionExample.dll...
开始执行...
没有要执行的测试。
【问题讨论】:
-
你能分享你的构建日志吗?你能看到在构建过程中恢复的 TestAdapter 吗?
-
我无法真正与您分享构建日志,但您能否通过看到“恢复”TestAdapter 来详细说明您的意思?我假设您的意思是 NUnit3.TestAdapter.dll,如果是这样,那么是的,我在构建日志中看到以下行:“将映射从 '$/TFSAdministration/BuildProcessTemplates/CustomAssemblies/NUnit3.TestAdapter.dll' 添加到 .... ..”
-
当使用
MsTest运行测试时,只会执行旧式 MsTest 项目。要加载新的可扩展测试运行程序,您必须改为执行vstest.console.exe。 -
@jessehouwing 您能否详细说明“必须执行 vstest.console.exe”语句。我不确定你的意思
-
Visual Studio 2012 引入了一个新的测试运行器,您会发现它隐藏在 Visual Studio 安装文件夹中。它被称为'vstest.console.*.exe'
标签: c# .net unit-testing tfs nunit