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

Android Studio中JaCoCo生成代码覆盖率报告失败及版本冲突求助

解决方案:Android Java项目Jacoco覆盖率报告无数据&Gradle版本冲突问题

一、不要降级Gradle,适配Gradle 7.0.2的Jacoco完整配置

你的项目明确要求最低Gradle版本7.0.2,强行降级只会导致版本冲突,Gradle 7.x和Jacoco 0.8.7完全兼容,只需补全缺失的Jacoco配置:

1. 根目录build.gradle(保留已完成部分)

确保Jacoco依赖正确添加:

buildscript {
    dependencies {
        classpath "org.jacoco:org.jacoco.core:0.8.7"
    }
}

2. App模块build.gradle补全配置

  • 顶部应用Jacoco插件:
apply plugin: 'jacoco'
  • 配置Jacoco工具版本:
jacoco {
    toolVersion = "0.8.7"
}
  • 完善Android构建配置:
android {
    buildTypes {
        debug {
            testCoverageEnabled true
            minifyEnabled false // 确保debug关闭混淆,避免覆盖率数据丢失
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }

    testOptions {
        // 适配Java 13的类加载问题
        unitTests.all {
            jacoco.includeNoLocationClasses = true
            jacoco.excludeClassLoaders = ['jdk.internal.loader.ClassLoaders$AppClassLoader']
        }
        animationsDisabled = true // 优化Espresso测试稳定性
    }
}
  • 添加任务确保覆盖率数据生成:
// 确保Android测试任务生成Jacoco数据
tasks.withType(com.android.build.gradle.tasks.Test) {
    jacoco.includeNoLocationClasses = true
    jacoco.output = JacocoTaskExtension.Output.FILE
}

二、解决「无覆盖率数据」问题

1. 指定模块运行覆盖率任务

不要直接运行根模块的createDebugAndroidTestCoverageReport,明确指定App模块:

gradlew app:createDebugAndroidTestCoverageReport

2. 检查覆盖率数据目录

运行测试后,手动查看路径C:\Git<companyname><companyname>\app\build\outputs\code_coverage\debugAndroidTest\connected(注意是app模块下的目录,不是根目录),确认是否生成.ec格式的覆盖率数据文件:

  • 如果没有生成:重启模拟器/测试设备,重新运行测试,排除设备临时故障
  • 如果有.ec文件:清理项目后重新构建(gradlew clean build),再生成报告

3. 排除冲突插件

如果项目中使用了其他测试或代码修改插件(如Robolectric、自定义字节码插件),暂时禁用后重试,排查是否存在插件冲突导致数据无法生成。

三、验证环境兼容性

Gradle 7.0.2支持Java 8-16,你的OpenJDK 13完全符合要求,无需更换Java版本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 15:45:42