作者:Ycandy | 来源:互联网 | 2023-02-10 15:05
我有一个测试任务间歇性失败的问题(我怀疑这是因为jacoco在测试期间触发了[生成报告])。
有没有一种方法可以在测试过程中禁用jacoco的运行?我可以创建一个仅用于生成覆盖率报告的新任务(我也想知道该怎么做)。在很多情况下,我在运行测试任务时实际上并不需要测试覆盖率报告。
1> Fresh Codemo..:
我发现,如果您执行了apply插件,那么即使您按照接受的答案中的说明进行了dependsOn.remove,jacoco工具也会发生。您可以看出创建了一个名为build / jacoco / test.exec的文件时,检测仍在进行,即使没有创建jacoco报告本身。
我必须将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分钟-节省了一些时间。
我有一篇博客文章,其中将所有这些内容包装成更完整的解释:https://poetengineer.postach.io/post/how-to-conditionally-enable-disable-jacoco-in-gradle-build
这很棒。在我的root build.gradle的下一部分中,我添加了以下“额外”变量,以便可以通过gradle命令行选项(-PjacocoEnabled = true)启用jacoco:`jacocoEnabled = System.properties.getProperty(“ jacocoEnabled“)?:” false“`另外,我非常确定您必须杀死gradle守护程序才能使其卸载jacoco插件(如果已加载)。