NUnit3 测试不在 TFS 构建上运行

Posted

技术标签:

【中文标题】NUnit3 测试不在 TFS 构建上运行【英文标题】:NUnit3 tests don't run on TFS build 【发布时间】: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' 【参考方案1】:

我遇到了同样的问题,发现测试项目的pbd 文件需要存在,以便适配器发现测试。

虽然在本地生成 .pbd 文件,但构建(在本例中为 TF Build)正在为 MSBuild 参数提供 /p:DebugType=None 开关。删除开关允许在构建中发现和运行测试。你的构建定义中有类似的东西吗?

该问题已在 GitHub 上被接受为 bug。

【讨论】:

以上是关于NUnit3 测试不在 TFS 构建上运行的主要内容,如果未能解决你的问题,请参考以下文章

TFS 构建未显示测试结果摘要

在 TFS 构建中运行 Specflow 测试

从 TFS 构建针对 Visual Studio Online 运行负载测试

TFS Build 2013 避免代码分析

运行 xctool 运行测试而不在机器上构建测试

2017年tfs发布的测试结果图表/图表