假设我运行 gradle 任务如下:
./gradlew cleanTest task1 task2 --info --rerun-task
在这里,如果任务 1 失败而任务 2 通过,则此运行的退出代码仍然为 0。如果任何任务失败,我希望它返回非零。
这些是添加到我的 build.gradle 文件中的任务
task task1(type: Test) {
maxParallelForks = 1
ignoreFailures true
testLogging {
events 'started', 'passed', 'skipped', 'failed'
exceptionFormat "full"
showStandardStreams = true
afterSuite { desc, result ->
if (!desc.parent) { // will match the outermost suite
println "RESULT: ${result.resultType} \n" +
"TOTAL TESTS: ${result.testCount}, " +
"SUCCESS: ${result.successfulTestCount}, " +
"FAILED: ${result.failedTestCount}, " +
"SKIPPED: ${result.skippedTestCount}"
finalResult = "${result.resultType}"
failedTest = "${result.failedTestCount}"
}
}
}
include "org/company/proj/test/Task1/Task1Test.class"
}
task task2(type: Test) {
maxParallelForks = 1
ignoreFailures true
testLogging {
events 'started', 'passed', 'skipped', 'failed'
exceptionFormat "full"
showStandardStreams = true
afterSuite { desc, result ->
if (!desc.parent) { // will match the outermost suite
println "RESULT: ${result.resultType} \n" +
"TOTAL TESTS: ${result.testCount}, " +
"SUCCESS: ${result.successfulTestCount}, " +
"FAILED: ${result.failedTestCount}, " +
"SKIPPED: ${result.skippedTestCount}"
finalResult = "${result.resultType}"
failedTest = "${result.failedTestCount}"
}
}
}
include "org/company/proj/test/Task2/Task2Test.class"
}```
从讨论中我了解到ignoreFailures
and failFast
就测试任务不符合你的要求吧?我可以看到一个用例,您希望确保两个测试任务都实际执行,即使第一个任务测试失败,但同时您希望当测试用例失败时构建最终失败在任何测试任务中。
首先你可能要考虑一下这个问题。通常,目的是通过尽快失败并中止构建来节省服务器(或本地)上的执行时间。
但是,如果您确实想构建满足您要求的东西,您已经提供了所有详细信息:您可以添加一个存储测试结果的项目变量,并创建一个额外的任务来检查该属性,如果存在则失败测试失败。
ext {
failedTests = false
}
task test1(type: Test) {
ignoreFailures true
afterSuite { desc, result ->
if (result.failedTestCount > 0) {
failedTests = true
}
}
}
task test2(type: Test) {
ignoreFailures true
afterSuite { desc, result ->
if (result.failedTestCount > 0) {
failedTests = true
}
}
}
task verifyTestResults() {
//dependsOn("test1", "test2") // static naming of test tasks
dependsOn tasks.withType(Test) // dynamically depend on all test tasks
doLast {
if(failedTests) {
throw new GradleException("There were failing tests!")
}
}
}
现在,您只需调用gradlew verifyTestResults
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)