NUnit3 作为 TeamCity 构建步骤的一部分抛出 "Process exited with code -2"
NUnit3 as part of buildstep in TeamCity throws "Process exited with code -2"
我遇到了一个有趣的问题。我创建了使用 NUnit3 控制台(通过命令行)运行单元测试的 TeamCity 构建步骤。
构建步骤设置:
Command executable: SomeRootFolder\Packages\NUnit.ConsoleRunner.3.4.1\tools\nunit3-console.exe
Command parameters: 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] 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 中报告所有内容都没有问题(构建步骤被标记为失败,报告有关 failed/passed 测试的统计信息等)
一旦所有测试都通过,构建步骤就会以代码 -2 退出,尽管看起来一切正常。
我也试过只测试一些单独的部分(特定程序集),构建步骤没有问题地完成并且它是绿色的(退出代码 0)。
任何想法,发生了什么事?发生这种情况的唯一情况是,当所有测试都通过并且使用整个解决方案执行构建步骤时。
-2 是发现无效程序集时提供的退出代码。
通过 运行ning .sln
- NUnit 必须计算出哪些构建的程序集是相关的 NUnit 测试程序集,并尝试仅 运行 那些。由于 .sln 和 .proj 文件不时更改格式,这不是一个完美的功能,有时会丢失文件。
尝试在命令行中按顺序列出所有测试 dll,看看是否能解决问题。例如
Command parameters: a.dll b.dll c.dll --process=single --timeout=300000 --where "cat != Slow"
或者,应该可以查看 TestResult.xml
并搜索标记为 "invalid" 的 "assembly" 个组件。如果您发现 NUnit 正在尝试 运行 它应该忽略的项目类型,您可以提交 bug report.
我遇到了一个有趣的问题。我创建了使用 NUnit3 控制台(通过命令行)运行单元测试的 TeamCity 构建步骤。
构建步骤设置:
Command executable: SomeRootFolder\Packages\NUnit.ConsoleRunner.3.4.1\tools\nunit3-console.exe Command parameters: 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] 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 中报告所有内容都没有问题(构建步骤被标记为失败,报告有关 failed/passed 测试的统计信息等)
一旦所有测试都通过,构建步骤就会以代码 -2 退出,尽管看起来一切正常。
我也试过只测试一些单独的部分(特定程序集),构建步骤没有问题地完成并且它是绿色的(退出代码 0)。
任何想法,发生了什么事?发生这种情况的唯一情况是,当所有测试都通过并且使用整个解决方案执行构建步骤时。
-2 是发现无效程序集时提供的退出代码。
通过 运行ning .sln
- NUnit 必须计算出哪些构建的程序集是相关的 NUnit 测试程序集,并尝试仅 运行 那些。由于 .sln 和 .proj 文件不时更改格式,这不是一个完美的功能,有时会丢失文件。
尝试在命令行中按顺序列出所有测试 dll,看看是否能解决问题。例如
Command parameters: a.dll b.dll c.dll --process=single --timeout=300000 --where "cat != Slow"
或者,应该可以查看 TestResult.xml
并搜索标记为 "invalid" 的 "assembly" 个组件。如果您发现 NUnit 正在尝试 运行 它应该忽略的项目类型,您可以提交 bug report.