我们目前正在将我们的单元测试从使用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 ...
开始执行......
没有要执行的测试。
答案 0 :(得分:0)
我遇到了同样的问题,发现测试项目的pbd
文件需要存在才能让适配器发现测试。
虽然.pbd
文件是在本地生成的,但构建(在本例中为TF Build)正在向MSBuild参数提供/p:DebugType=None
开关。删除交换机允许在构建中发现并运行测试。你的构建定义中有类似的东西吗?
该问题已在GitHub上被接受为bug。