在运行包含多模块项目测试的 gradle 任务后,我想查看所有模块中每个测试失败的摘要,例如
模块 1: 测试模块1thing1 通过 测试模块1thing2 失败 结果 2 次测试 1 次通过 1 次失败 模块 2: 测试模块2thing1 通过 testmodule2thing2 失败 结果 2 次测试 1 次通过 1 次失败 模块 3: testmodule3thing1 失败 结果 1 项测试 1 项通过 1 项失败 构建失败 ========= 我已经拥有了这条线以上的所有内容 测试失败: 测试模块1thing1 测试模块2thing2 测试模块3thing1 ========= 我想要最后一行和这一行之间的所有内容
这可能吗?如果是这样,怎么办?如果不可能提供完整的任务摘要,我可以接受每个模块的摘要
小智 10
这也可以直接在测试任务本身中完成:
tasks.withType(Test) {
// a collection to track failedTests
ext.failedTests = []
afterTest { descriptor, result ->
if (result.resultType == TestResult.ResultType.FAILURE) {
String failedTest = "${descriptor.className}::${descriptor.name}"
logger.debug("Adding " + failedTest + " to failedTests...")
failedTests << [failedTest]
}
}
afterSuite { suite, result ->
if (!suite.parent) { // will match the outermost suite
// logs each failed test
if (!failedTests.empty) {
logger.lifecycle("Failed tests:")
failedTests.each { failedTest ->
logger.lifecycle("${failedTest}")
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
您可以将 testlistener 与 buildFinished 挂钩结合使用。一个非常简单的解决方案可能类似于初稿:
allprojects {
// add a collection to track failedTests
ext.failedTests = []
// add a testlistener to all tasks of type Test
tasks.withType(Test) {
afterTest { TestDescriptor descriptor, TestResult result ->
if(result.resultType == org.gradle.api.tasks.testing.TestResult.ResultType.FAILURE){
failedTests << ["${descriptor.className}::${descriptor.name}"]
}
}
}
// print out tracked failed tests when the build has finished
gradle.buildFinished {
if(!failedTests.empty){
println "Failed tests for ${project.name}:"
failedTests.each { failedTest ->
println failedTest
}
println ""
}
}
}
Run Code Online (Sandbox Code Playgroud)
更好地了解失败测试的另一个选择可能是使用 gradle 构建扫描(https://plugins.gradle.org/plugin/com.gradle.build-scan)。
归档时间: |
|
查看次数: |
4263 次 |
最近记录: |