我正面临一个有趣的问题。我创建了TeamCity构建步骤,该步骤使用NUnit3控制台(通过命令行(运行单元测试。
构建步骤设置:
命令可执行文件:SomeRootFolder\Packages\NUnit.ConsoleRunner.3.4.1\tools\nunit3-console.exe命令参数:SomeRootFolder\Solution\Project.sln--process=single--timeout=300000--where"cat!=Slow">
构建步骤按预期开始执行:
> [01:42:29][Step 2/4] NUnit Console Runner 3.4.1
> [01:42:29][Step 2/4] Copyright (C) 2016 Charlie Poole
> [01:42:30][Step 2/4] Runtime Environment
> [01:42:30][Step 2/4] OS Version: Microsoft
> Windows NT 6.3.9600.0
> [01:42:30][Step 2/4] CLR Version:
> [01:42:30][Step 2/4] 4.0.30319.34014
> [01:42:30][Step 2/4] Test Files
> [01:42:30][Step 2/4] SomeRootFolderSolutionProject.sln
> [01:42:30][Step 2/4]
> [01:42:30][Step 2/4] Test Filters
> [01:42:30][Step 2/4] Where: cat != Slow
> Execution of 1000+ tests
> [02:37:32][Step 2/4] Test Run Summary
> [02:37:32][Step 2/4] Overall result: Failed
> [02:37:32][Step 2/4] Test Count: 1337, Passed: 1289, Failed: 0, Inconclusive: 0, Skipped: 48
> [02:37:32][Step 2/4] Skipped Tests - Ignored: 48, Explicit: 0, Other: 0
> [02:37:32][Step 2/4] Start time: 2016-09-15 23:42:52Z
> [02:37:32][Step 2/4] End time: 2016-09-16 00:37:26Z
> [02:37:32][Step 2/4] Duration: 3273.646 seconds
> [02:37:32][Step 2/4]
> [02:37:32][Step 2/4] Results (nunit3) saved as TestResult.xml
> [02:37:33][Step 2/4] Process exited with code -2
> [02:37:33][Step 2/4] Step Nunit tests - investigation - full build (Command Line) failed
只要至少有1个测试失败,执行就会以代码0退出,并且在Team City中报告所有内容,而不会出现任何问题(构建步骤标记为失败,报告有关失败/通过测试的统计信息等(
一旦所有测试都通过,构建步骤将以代码-2退出,尽管看起来一切都很好。
我还试着只测试了一些单独的部件(特定的程序集(,再次完成了构建步骤,没有出现任何问题,它是绿色的(已退出,代码为0(。
有什么想法吗,发生了什么事?只有当这种情况发生时,当所有测试通过并使用整个解决方案执行构建步骤时,才会发生这种情况。
-2是在发现无效程序集时提供的退出代码。
通过在.sln
上运行,NUnit必须确定哪些构建的程序集是相关的NUnit测试程序集,并尝试只运行这些程序集。由于.sln和.proj文件不时更改格式,这不是一个完美的功能,有时会丢失文件。
试着在命令行中按顺序列出所有测试dll,看看这是否解决了问题。例如
Command parameters: a.dll b.dll c.dll --process=single --timeout=300000 --where "cat != Slow"
或者,也可以查看TestResult.xml
并搜索标记为"无效"的"程序集"组件。如果你发现NUnit正在尝试运行一个它应该忽略的项目类型,你可以提交一个错误报告。