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

如何在Jacoco代码覆盖率报告中排除databinding相关包?

配置失效原因

原有配置存在两个核心问题:

  1. 在testOptions的jacoco块内同时对classDirectories做了两次赋值,后一次赋值会直接覆盖afterEvaluate中配置的规则
  2. 仅配置单元测试运行时的jacoco路径没有作用于Jacoco报告生成任务,报告生成时仍然会读取全量类文件

正确配置方案

先移除原有testOptions中重复的classDirectories相关配置,在模块级build.gradle中按如下规则配置:

// 顶部引入jacoco插件
apply plugin: 'jacoco'

android {
    // 保留其他原有安卓配置
    testOptions {
        unitTests.all {
            jacoco {
                includeNoLocationClasses = true
            }
        }
    }
}

// 统一配置所有Jacoco任务的排除规则
tasks.withType(Test) {
    jacoco.excludes += ['**/*databinding/**', '**/BR.*', '**/DataBinderMapperImpl.*']
}

tasks.withType(JacocoReport) {
    afterEvaluate {
        // 排除databinding相关类文件
        classDirectories.setFrom(files(classDirectories.files.collect {
            fileTree(dir: it, exclude: [
                '**/*databinding/**/*.*',
                '**/BR.*',
                '**/*BindingImpl.*',
                '**/DataBinderMapper*.*'
            ])
        }))
        // 可选:排除报告中展示的databinding生成源码
        sourceDirectories.setFrom(files(sourceDirectories.files.collect {
            fileTree(dir: it, exclude: '**/*databinding/**/*.*')
        }))
    }
}

验证步骤

配置完成后先执行./gradlew clean清理项目缓存,再重新运行Jacoco报告生成任务即可。

内容的提问来源于stack exchange,提问作者Mikhail

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 18:15:03