我正在进行Jenkins多分支管道项目,其中一个步骤将运行单元测试。当某些单元测试失败时,詹金斯将构建标记为不稳定,而不是失败。
stage('UnitTests') {
steps {
bat(returnStatus: true, script: """
"MSTest" /resultsfile:"testresults-module1-Tests_${env.BUILD_ID}.trx" /testcontainer:bin/module1.Tests.dll"
"MSTest" /resultsfile:"testresults-module2-Tests_${env.BUILD_ID}.trx" /testcontainer:bin/module2.Tests.dll"
""")
step([$class: 'MSTestPublisher', testResultsFile:"testresults*.trx", failOnError: true, keepLongStdio: true])
}
}
当任何测试失败时,我需要这项工作失败。
答案 0 :(得分:0)
我使用了一种解决方法来解决此问题。
stage('UnitTests') {
steps {
script {
resultcmd = 0
resultcmd += bat(returnStatus: true, script: """
"MSTest" /resultsfile:"testresults-module1-Tests_${env.BUILD_ID}.trx" /testcontainer:bin/module1.Tests.dll"
exit /b %errorlevel%
""")
resultcmd += bat(returnStatus: true, script: """
"MSTest" /resultsfile:"testresults-module2-Tests_${env.BUILD_ID}.trx" /testcontainer:bin/module2.Tests.dll"
exit /b %errorlevel%
""")
if (resultcmd > 0) {
error("Tests failed")
}
}
}
}
我在单独的bat块中执行每个命令,并将结果添加到名为resultcmd的变量中。然后,最后,我检查resultcmd的值,如果该值大于0,则强制执行错误。
我确定这不是最佳解决方案,但这是我找到的唯一解决方案。