NUnit3测试在TFS构建中无法运行

6
我们目前正在将单元测试从MSTest迁移到NUnit (版本3.2.1),但是在使用TFS.xaml构建定义运行NUnit测试时遇到了问题。TFS构建定义使用规则“在与**\*.test*.dll匹配的程序集中运行测试”。对于我的NUnit测试项目,我已经下载、安装和引用了以下NuGet软件包: 1) NUnit v3.2.1 2) NUnit3TestAdapter v3.0.10
在VS(测试资源管理器)中执行我的测试非常完美,我认为这些步骤足以确保它们也作为CI构建的一部分运行,但是测试从未执行。我在诊断输出中没有关于这些测试的错误/警告/消息,但是我确实看到构建过程检测到我的程序集符合上述通配符规则(**\*.test*.dll)中的单元测试候选项。
我还尝试将NUnit3TestAdapter程序集放入TFS构建控制器属性中定义的"自定义程序集版本控制路径"文件夹中,但无济于事。
有人能否看出我在这个过程中是否漏掉了一个步骤?从我在这些论坛上阅读的所有内容来看,我似乎已经做了必要的一切,但它们仍然不会执行。
我通过直接在包含我的NUnit测试的程序集上运行MSTest.exe(这是TFS构建使用的工具)来大大简化了问题。相应的程序集已经安装了适配器和nunit框架作为NuGet软件包,但仍然报告没有发现测试(见下文): 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 吗? - Cece Dong - MSFT
我无法与您分享构建日志,但您能否详细说明一下您所说的“恢复”TestAdapter是什么意思?我猜您指的是NUnit3.TestAdapter.dll,如果是这样,那么是的,我在构建日志中看到了以下行:“正在添加从'$ / TFSAdministration / BuildProcessTemplates / CustomAssemblies / NUnit3.TestAdapter.dll'到......的映射。” - davies
使用 MsTest 运行测试时,只会执行旧版的 MsTest 项目。要加载新的可扩展测试运行程序,必须执行 vstest.console.exe - jessehouwing
@jessehouwing,您能详细说明“必须执行vstest.console.exe”这个语句吗?我不确定您的意思。 - Neil
Visual Studio 2012引入了一个新的测试运行器,你可以在Visual Studio安装文件夹中找到它。它被称为“vstest.console.*.exe”。 - jessehouwing
1个回答

0
我曾经遇到同样的问题,并发现测试项目中需要存在pbd文件,以便适配器能够发现测试。
虽然本地生成了.pbd文件,但是构建(在这种情况下是TF Build)提供了/p:DebugType=None开关给MSBuild参数。删除该开关允许在构建中发现并运行测试。你的构建定义中是否有类似的设置?
该问题已被接受为GitHub上的bug

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接