NUnit3作为TeamCity中buildstep的一部分抛出“进程退出代码-2”

时间:2016-09-16 08:12:51

标签: teamcity nunit-3.0 nunit-console

我正面临着有趣的问题。我创建了TeamCity构建步骤,使用NUnit3控制台(通过命令行)运行单元测试。

构建步骤设置:

  

命令可执行文件: SomeRootFolder \ Packages \ NUnit.ConsoleRunner.3.4.1 \ tools \ nunit3-console.exe   命令参数: SomeRootFolder \ Solution \ Project.sln --process = single --timeout = 300000 - 其中“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]    SomeRootFolder\Solution\Project.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)。

任何想法,发生了什么?只有在发生这种情况时才会发生,当所有测试都通过并且构建步骤以整个解决方案执行时。

1 个答案:

答案 0 :(得分:1)

-2是找到无效程序集时提供的退出代码。

通过在.sln上运行 - NUnit必须确定哪些构建的程序集是相关的NUnit测试程序集,并尝试仅运行它们。由于.sln和.proj文件偶尔会改变格式,因此这不是一个完美的功能,有时会遗漏文件。

尝试在命令行上按顺序列出所有测试dll,看看是否能解决问题。 e.g。

Command parameters: a.dll b.dll c.dll --process=single --timeout=300000 --where "cat != Slow"

或者,应该可以查看TestResult.xml并搜索标记为“无效”的“程序集”组件。如果您发现NUnit正在尝试运行项目类型,它应该忽略,您可以提交bug report