NUnit3测试不运行在TFS构建

问题描述:

我们正在将我们的单元测试从使用MSTest迁移到NUnit(版本3.2.1),但在运行我们的TFS .xaml构建定义中的NUnit测试时遇到问题。 TFS构建定义使用规则“在匹配** \ *。test * .dll的程序集中运行测试”。对于我NUnit测试项目,我已经下载,安装,并参考了以下的NuGet包:NUnit3测试不运行在TFS构建

1)NUnit的V3.2.1

2)NUnit3TestAdapter v3.0.10

内VS执行我的测试(测试浏览器)完美地工作,我认为这些步骤足以确保它们也作为CI构建TFS的一部分运行,但是测试从未执行。在诊断输出中,我没有与这些测试有关的错误/警告/消息,但是我确实发现构建过程已经将我的程序集检测为单元测试的候选者,因为它与上述通配符规则相匹配(** \ *。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 ...

开始执行...

没有要执行的测试。

+0

你能分享你的构建日志吗?您是否能够在构建过程中看到TestAdapter恢复? –

+0

我无法真正与你共享生成日志,但是你能否通过看到TestAdapter“恢复”来详细说明你的意思?我假设你的意思是NUnit3.TestAdapter.dll,如果是这样,那么是的,我看到构建日志中的以下行:“将映射从'$/TFSAdministration/BuildProcessTemplates/CustomAssemblies/NUnit3.TestAdapter.dll'添加到.... ..“ – davies

+0

当使用'MsTest'运行测试时,只会执行旧样式的MsTest项目。要加载新的可扩展测试运行器,您必须*执行'vstest.console.exe'。 – jessehouwing

我遇到了同样的问题,并且发现测试项目的pbd文件需要存在才能使适配器发现测试。

虽然.pbd文件是在本地生成的,但版本(本例中为TF Build)正在将/p:DebugType=None切换提供给MSBuild参数。移除开关可以发现测试并在构建中运行。你可以在你的构建定义中有类似的东西吗?

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