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

Android Studio中Kotlin与Java跨语言单元测试覆盖率显示0%求助

解决Android跨语言(Kotlin/Java)单元测试覆盖率为0%的问题

我完全懂你遇到的这个头疼问题——明明跨语言的单元测试都能正常跑通,结果覆盖率显示0%,而同语言组合的覆盖率却完全正常。结合你给出的Gradle和依赖配置,我整理了几个亲测有效的解决方案:

1. 优先升级Gradle和Kotlin插件版本

你当前用的Gradle 4.1和Kotlin 1.1.61都是比较早期的版本,对跨语言测试覆盖率的支持存在已知缺陷。建议升级到更稳定的组合:

  • Gradle版本至少升到5.6.4(如果项目允许,直接用7.x系列的稳定版更好)
  • Kotlin版本升级到1.3.72+(推荐1.4.x或更高版本,确保和Gradle版本兼容)

升级后,记得在项目根目录的build.gradle里同步Kotlin插件版本:

buildscript {
    ext.kotlin_version = "1.3.72"
    repositories {
        google()
        mavenCentral()
    }
    dependencies {
        classpath "com.android.tools.build:gradle:5.6.4"
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}

2. 配置Jacoco覆盖率工具并适配Kotlin

旧版本的Android Gradle插件对Kotlin的覆盖率统计需要额外配置,推荐用Jacoco作为覆盖率工具,在模块的build.gradle中添加以下配置:

android {
    // ... 你的其他配置
    buildTypes {
        debug {
            testCoverageEnabled true
        }
    }

    testOptions {
        unitTests.all {
            jacoco {
                // 解决Kotlin字节码无位置信息导致的覆盖率统计问题
                includeNoLocationClasses = true
            }
        }
    }
}

// 指定Jacoco版本,用较新的版本兼容性更好
jacoco {
    toolVersion = "0.8.5"
}

dependencies {
    // ... 已有依赖
    // 添加Kotlin测试依赖,确保和Kotlin版本匹配
    testImplementation "org.jetbrains.kotlin:kotlin-test-junit:$kotlin_version"
}

3. 检查测试类的包路径是否与源码一致

有时候跨语言覆盖率为0,只是因为测试类的包名和被测试类的包名不匹配,导致Jacoco无法关联到对应的源码。比如你有个Kotlin类com.example.MyKotlinClass,对应的Java测试类必须放在test/java/com/example/MyKotlinClassTest.java这个路径下,包名完全一致才行。

4. 清理缓存并重新构建项目

旧的构建缓存很可能会干扰覆盖率统计,执行以下步骤试试:

  • 在Android Studio中点击Build -> Clean Project
  • 接着点击Build -> Rebuild Project
  • 重新运行测试并生成覆盖率报告

5. 排查PowerMock的兼容性问题

你当前使用的PowerMock版本(1.7.3)和Mockito 2.8.9搭配,可能会和Jacoco的覆盖率统计冲突——因为PowerMock会修改类的字节码,影响Jacoco的统计逻辑。如果你的测试不需要PowerMock,可以先暂时移除它,看看覆盖率是否恢复正常。如果必须使用,建议升级PowerMock到支持Jacoco的新版本,比如2.0.9:

testImplementation "org.powermock:powermock-module-junit4:2.0.9"
testImplementation "org.powermock:powermock-api-mockito2:2.0.9"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:50:39