我有一个问题,其中测试任务间歇性地失败(我怀疑是因为jacoco在测试期间触发[生成报告])。
有没有办法在测试期间禁用jacoco的运行?我可以创建一个新任务,仅用于生成覆盖率报告(我想知道如何做到这一点)。在运行测试任务时,我很多时候并不需要测试覆盖率报告。
答案 0 :(得分:4)
我发现如果你执行apply插件,那么即使你已经完成了接受答案中所述的dependsOn.remove,jacoco工具也会发生。即使未创建jacoco报告本身,也可以创建名为build / jacoco / test.exec的文件,从而判断检测仍在进行。
我不得不将jacoco插件应用于单独的.gradle文件,并有条件地将其包括在内:
if (jacocoEnabled.toBoolean() ) {
project.logger.lifecycle('applying jacoco build file')
apply from: "jacoco.gradle"
}
然后我的jacoco.gradle文件看起来像:
apply plugin: 'java'
apply plugin: 'jacoco'
test {
jacoco {
append = false
destinationFile = file("$buildDir/jacoco/test.exec")
}
}
jacocoTestReport {
reports {
xml.enabled true
xml.destination file("${buildDir}${jacocoXMLDestination}")
}
}
test.finalizedBy jacocoTestReport
这使我的构建时间从4分钟缩短到3分钟 - 节省了一些费用。
答案 1 :(得分:2)
如果它确实在Jenkins上运行,则错误137可能是内存不足问题。
如果它在Jenkins上运行,请尝试扩展内存并检查此链接。
Jacoco任务:
jacocoTestReport - JacocoReport Generates code coverage report for the test task.
jacocoTestCoverageVerification - JacocoCoverageVerification Verifies code coverage metrics based on specified rules for the test task.
找出哪些任务具有哪些依赖关系
gradle tasks --all
要使用cmd排除任务,您可以
gradle test -x taskToExclude
以编程方式,您可以使用任务图将其排除
gradle.taskGraph.useFilter { task -> yourstuff}
或者只是将其从测试任务依赖项中删除
test.dependsOn.remove("jacocoTestReport")
test.dependsOn.remove("jacocoTestCoverageVerification")
值得检查的额外资源: https://docs.gradle.org/current/userguide/jacoco_plugin.html