我正面临着有趣的问题。我创建了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)。
任何想法,发生了什么?只有在发生这种情况时才会发生,当所有测试都通过并且构建步骤以整个解决方案执行时。
答案 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。