You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 10:17:12