Mat*_*ttG 2 java gradle jacoco jacoco-plugin
在我的 gradle 版本中,我有 2 个这样的测试任务:
task testAAA(type: Test) {
filter {
includeTestsMatching "*AAA*"
}
finalizedBy jacocoTestReport
}
Run Code Online (Sandbox Code Playgroud)
和
task testBBB(type: Test) {
filter {
includeTestsMatching "*BBB*"
}
finalizedBy jacocoTestReport
}
Run Code Online (Sandbox Code Playgroud)
这会在 build/jacoco 中生成 2 个 .exec 文件:
测试AAA.exec
testBBB.exec
我想生成一个单一的覆盖率报告,它从两个/所有 .exec 文件中获取输入,我试过这个:
jacocoTestReport {
executionData fileTree(project.rootDir.absolutePath).include("**/build/jacoco/*.exec")
reports {
xml.enabled true
}
}
Run Code Online (Sandbox Code Playgroud)
当我尝试时,我收到此错误:
Execution failed for task ':Project1:jacocoTestReport'.
> Unable to read execution data file Project1/build/jacoco/test.exec
Project1/build/jacoco/test.exec (No such file or directory)
Run Code Online (Sandbox Code Playgroud)
当我明确提供 executionData 规范时,为什么 jacocoTestReport 寻找“test.exec”?
我建议传入测试任务而不是文件树。这将允许插件确保查找正确的文件,并将解决一些可能发生的执行顺序问题,例如确保此报告任务在测试任务本身之后运行。
所以像:
jacocoTestReport {
executionData tasks.withType(Test)
reports {
xml.enabled true
}
}
Run Code Online (Sandbox Code Playgroud)
我为此挣扎了一段时间,甚至取得了成功。直到我昨天回来。花了几个小时搜索并在 GH 上找到了这个。
jacocoTestReport {
getExecutionData().setFrom(fileTree(buildDir).include("/jacoco/*.exec"))
}
Run Code Online (Sandbox Code Playgroud)
从 Gradle 6.0 开始,这是要走的路线。已经针对具有 2 组测试的 repo 对其进行了测试,我可以单独运行或同时运行,Jacoco 不会爆炸。
| 归档时间: |
|
| 查看次数: |
949 次 |
| 最近记录: |