tasks.withType(Test) {
jacoco.excludes = ['**/*$*_closure*']
finalizedBy jacocoTestReport // report is always generated after tests run
}
jacocoTestReport {
afterEvaluate {
classDirectories.setFrom(files(classDirectories.files.collect {
fileTree(dir: it, excludes: ['**/*$*_closure*'])
}))
}
dependsOn test // tests are required to run before generating the report
}
2条答案
按热度按时间gz5pxeao1#
您可以使用下面的代码片段从JaCoCo记录中排除隐式闭包类,但这并不妨碍在封闭类中记录语句
使用该片段,不再记录覆盖率,但现在所有闭包在报告中显示为0%覆盖率,因此也减少了整体覆盖率统计。
添加以下代码片段将从JaCoCo报告中删除闭包类,从而也将给予更有意义的总体统计数据。上面的代码片段并不是真的必要的,它只是带来了一点性能改进,因为报告不需要记录和转换覆盖率,所以我建议使用这两个代码片段。
如果您有多个
Test
和JacocoReport
任务要以这种方式修改,当然也可以像更新:
这里是最后一个例子的重新制作版本,使用Gradle 8.0.2 forKotlinDSL:
afterEvaluate
当然是邪恶的,但在这种情况下是必要的。在doFirst
中更改配置,从而在执行阶段更邪恶,但在这种情况下更可靠,但不再工作,因为属性在执行阶段是只读的。vm0i2vca2#
Vampire's answer在我使用Gradle 6.6.1时不起作用。下面的代码片段可以完成这项工作: