NUnit3 作为 TeamCity 中构建步骤的一部分抛出"Process exited with code -2"



我正面临一个有趣的问题。我创建了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正在尝试运行一个它应该忽略的项目类型,你可以提交一个错误报告。

相关内容

最新更新