Android Studio单元测试覆盖率全显示0%问题求助
我之前也碰到过一模一样的问题!结合自己踩过的坑和社区里的经验,这几个容易遗漏的设置和常见问题你可以挨个排查:
检查模块build.gradle的覆盖率配置
确保在你的app模块(或目标测试模块)的build.gradle文件里,已经开启了测试覆盖率的支持:android { buildTypes { debug { // 开启Debug变体的覆盖率统计 testCoverageEnabled true } } } // 如果用Kotlin,记得添加Jacoco插件 plugins { id 'com.android.application' id 'org.jetbrains.kotlin.android' id 'jacoco' }要是没加
testCoverageEnabled true,就算测试全过,也不会生成任何覆盖率数据。确认测试运行的是Debug变体
有时候默认的Run Configuration可能指向了Release变体,而Release通常不会开启覆盖率统计。你可以右键测试文件→Edit Configurations,在General标签页里查看Build variant是否设置为Debug,改成Debug后再重新运行测试。排查Jacoco的排除规则是否出错
如果你手动配置了Jacoco的规则,不小心把主代码全部排除的话,就会出现覆盖率0%的情况。检查build.gradle里有没有类似这样的错误配置:jacocoTestReport { afterEvaluate { classDirectories.setFrom(files(classDirectories.files.collect { fileTree(dir: it, exclude: ['**/*']) // 这种配置会把所有代码排除 })) } }确保exclude的是测试类或者不需要统计的代码,而不是主业务代码。
清理重建项目,清除缓存
Android Studio的缓存有时候会导致覆盖率数据无法正常生成。先执行Build → Clean Project,再Build → Rebuild Project,之后重新运行带覆盖率的测试,很多时候缓存问题就能解决。确认测试类型和运行范围匹配
如果你写的是Instrumented Tests(需要在设备/模拟器上运行的测试),但右键运行时选了错误的测试类型,也可能导致覆盖率统计异常。要确保选择Run Tests With Coverage时,对应的测试类型是正确的——比如Instrumented Tests需要设备正常连接,且Run Configuration类型为Android Instrumented Tests。
这些是我当时排查出来的核心原因,你可以逐个尝试,应该能解决覆盖率全为0%的问题!
内容的提问来源于stack exchange,提问作者Ben987654

