防止Bamboo在失败测试被移动到隔离区时失败任务。

23

Bamboo上,我有一个用于构建和运行测试的MSBuild作业。

它工作正常 - 但我想使用test quarantine选项,这样当我有一些测试移动到隔离区(而这些移动的测试是唯一失败的)时,作业将被标记为成功。

我将一个失败的测试移动到了隔离区,但是作业仍然标记为失败。

配置:

Job -> Tasks中,我有一个名为Test runnerCommand

Executable = VSTest.Console

Argument = "WebServiceTestClient.dll" /Logger:trx

在将失败的测试隔离后运行作业后,我得到了日志。

01-Apr-2014 10:59:44  Total tests: 62. Passed: 61. Failed: 1. Skipped: 0. 
01-Apr-2014 10:59:44  Test Run Failed. 
01-Apr-2014 10:59:44  Test execution time: 10.1296 Minutes 
01-Apr-2014 10:59:44  Failing task since return code of [C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\VSTest.Console.exe "WebServiceTestClient.dll" /Logger:trx] was 1 while expected 0 
01-Apr-2014 10:59:44  Finished task 'Test runner' 
01-Apr-2014 10:59:44  Starting task 'Parse test logs' of type 'com.atlassian.bamboo.plugin.dotnet:mstest' 
01-Apr-2014 10:59:44  Parsing test results... 
01-Apr-2014 10:59:45  Failing task since 1 failing test cases were found. 

工作被标记为失败,但随后发生了什么:

01-Apr-2014 10:59:45  Changing Task Result to SUCCESS as all failed tests were quarantined. 
01-Apr-2014 10:59:45  Finished task 'Parse test logs' 
01-Apr-2014 10:59:45  Running post build plugin 'NCover Results Collector' 
01-Apr-2014 10:59:45  Running post build plugin 'Clover Results Collector' 
01-Apr-2014 10:59:45  Running post build plugin 'Artifact Copier' 
01-Apr-2014 10:59:45  Finalising the build... 
很不幸,输出结果为: enter image description here


9
Bambo将除了0以外的所有返回结果都视为失败,而通常情况下,当程序出现警告等情况时会返回1。因此,我的解决方法是使用内联脚本任务(而不是命令任务),在任务中首先运行vstest.console,然后捕获返回值(%ERRORLEVEL%),如果返回值为1,则执行EXIT /B 0 - tmlai
谢谢你的留言,其实你已经给出了答案。我创建了一个 PowerShell 脚本来进行测试,并添加了一个新任务来解析 mstest trx。 - Nordes
1个回答

1
问题在于工作结果失败了。
您可以通过一个ant脚本来运行测试,只要目标成功执行,您就可以通过。在我的竹子设置中,我像这样运行所有的单元测试,在运行测试后,我查找测试结果,如果缺少一个(例如,如果cppunit exe引发异常并且没有写出其结果),则生成一个失败的测试结果。
然后,最终阶段被设置为检查测试结果(这可以是您从中运行测试的相同阶段或稍后的阶段)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接