Android Studio运行带覆盖率单元测试提示No coverage for unit test如何解决
核心原因
buildTypes中配置的isTestCoverageEnabled = true仅对androidTest目录下的仪器化测试生效,对test目录下的本地JVM单元测试不生效。你当前缺少本地单元测试的覆盖率采集配置,因此两种覆盖率运行器都无法识别有效数据。
修复方案
若你的SimpleTest存放在test目录(本地JVM单元测试)
需额外配置Jacoco插件适配本地测试覆盖率采集:
- 在模块级
build.gradle.kts头部引入Jacoco插件:
plugins { id("com.android.application") id("kotlin-android") id("jacoco") // 新增Jacoco插件声明 }
- 在
android配置块外添加Jacoco测试任务配置:
tasks.withType<Test> { configure<JacocoTaskExtension> { isIncludeNoLocationClasses = true excludes = listOf("jdk.internal.*") } } // 可选:指定兼容AGP 7.0+的Jacoco版本,规避Arctic Fox版本兼容性问题 jacoco { toolVersion = "0.8.7" }
- 同步Gradle配置后重新执行带覆盖率的测试即可。
若你的SimpleTest存放在androidTest目录(仪器化测试)
按以下顺序排查:
- 确认运行测试时选择的构建变体为
debug,仅开启了isTestCoverageEnabled的构建变体支持覆盖率采集 - 检查测试运行配置的覆盖范围包含
SimpleClass所在的包路径,排除路径过滤规则导致的类无法识别问题 - 确认
SimpleTest类上已添加@RunWith(JUnit4::class)注解,缺失该注解会导致测试逻辑识别异常,影响覆盖率采集
内容的提问来源于stack exchange,提问作者user14083437
相关产品推荐
相关产品推荐

