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

Android Studio中Jacoco未统计Robolectric测试代码覆盖率问题

解决Robolectric单元测试未被Jacoco覆盖率统计的问题

针对你的环境(AGP 7.2.0、Gradle 7.4.2、Robolectric 4.10.3),需要补充Jacoco的核心配置,确保本地单元测试的代码插桩和覆盖率收集正常工作,具体修改如下:

1. 启用Jacoco插件

在模块级build.gradle的plugins块中添加Jacoco插件:

plugins {
    id("com.android.application")
    id("org.jetbrains.kotlin.android")
    id("jacoco") // 新增Jacoco插件
}

2. 配置测试覆盖率与Robolectric兼容项

在android块内补充以下配置:

android {
    // ... 保留原有配置(namespace、compileSdk、defaultConfig等)

    buildTypes {
        debug {
            isTestCoverageEnabled = true // 开启Debug变体的测试覆盖率收集
        }
        release {
            isMinifyEnabled = false
            proguardFiles(
                getDefaultProguardFile("proguard-android-optimize.txt"),
                "proguard-rules.pro"
            )
        }
    }

    // 配置Jacoco版本,避免AGP自带版本与Robolectric的兼容问题
    jacoco {
        toolVersion = "0.8.8" // 可使用0.8.8+的稳定版本
    }

    testOptions {
        unitTests {
            isIncludeAndroidResources = true // Robolectric访问资源必需,同时确保测试被正确识别
            all { testTask ->
                testTask.jacoco {
                    isIncludeNoLocationClasses = true // 解决Robolectric类无位置信息导致的覆盖率丢失问题
                    // 排除JDK/R8生成类的警告,避免干扰统计
                    excludeClassLoaders = listOf("sun.misc.Launcher$AppClassLoader", "com.android.tools.r8.GeneratedClassLoader")
                }
            }
        }
    }
}

3. 生成并查看覆盖率报告

执行以下Gradle命令运行测试并生成覆盖率报告:

./gradlew clean jacocoTestDebugUnitTestReport

报告生成后,可在路径模块名/build/reports/jacoco/jacocoTestDebugUnitTestReport/html/index.html中打开查看,此时Robolectric测试覆盖的代码会被正常统计。

关键注意事项

  • 必须基于Debug变体运行测试,Release变体默认不开启覆盖率收集(即使你关闭了混淆)
  • 确保Robolectric测试类位于src/test/java目录下(本地单元测试目录),而非src/androidTest/java(Instrumented测试目录)
  • 若仍存在统计缺失,可尝试清理构建缓存后重新运行测试:./gradlew clean testDebugUnitTest jacocoTestDebugUnitTestReport

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 08:02:26