Android+Jacoco如何排除指定包生成代码覆盖率报告?
解决Jacoco排除指定包的配置问题(Android Gradle 8.0.2 + Jacoco 0.8.8)
你之前的配置位置错误,导致排除规则不生效。在Gradle 8.x + Android Gradle Plugin 8.x版本中,需要直接针对Jacoco的报告任务调整classDirectories,而非在testOptions的jacoco块内配置。
以下是正确的Groovy配置示例:
// 针对所有测试任务开启Jacoco,并处理无位置类的情况 tasks.withType(Test) { jacoco.includeNoLocationClasses = true } // 配置所有Jacoco报告任务的排除规则 tasks.withType(JacocoReport) { afterEvaluate { classDirectories.setFrom(files(classDirectories.files.collect { fileTree(dir: it, exclude: [ '**/databinding/**/*', // 可按需添加更多排除项 '**/BuildConfig.class', '**/R.class', '**/R$*.class' ]) })) } }
如果只需要针对单元测试的报告任务配置,也可以指定具体任务名:
tasks.named('jacocoTestReport') { classDirectories.setFrom( files(classDirectories.files.collect { fileTree(dir: it, exclude: [ '**/databinding/**/*' ]) }) ) }
关键说明:
**/databinding/**/*会匹配所有databinding包及其子包下的所有类,确保完全排除该包的覆盖率统计。- 执行
./gradlew jacocoTestReport重新生成报告,即可看到指定包已被排除。
内容的提问来源于stack exchange,提问作者B3n
相关产品推荐
相关产品推荐

