如何从Android单元测试覆盖率报告中排除Hilt生成类
排除Hilt生成类以修正Android单元测试覆盖率报告
要解决Hilt生成类干扰覆盖率统计的问题,有两种常用方案,分别对应全局配置和单次测试配置:
一、Gradle全局配置(推荐)
直接在模块的Gradle配置中指定Jacoco要排除的Hilt生成类,这样所有测试任务都会生效,不用每次手动调整。
Kotlin DSL(build.gradle.kts)
在jacoco块或测试任务的配置里添加排除规则:
tasks.withType<Test> { configure<JacocoTaskExtension> { excludes = listOf( "**/hilt/**", "**/*Hilt*.class", "**/*_HiltComponents*.class", "**/*InjectorFactory*.class", "**/*Hilt_SingletonComponent*.class" ) } }
Groovy(build.gradle)
对应的Groovy写法:
tasks.withType(Test) { jacoco { excludes = [ '**/hilt/**', '**/*Hilt*.class', '**/*_HiltComponents*.class', '**/*InjectorFactory*.class', '**/*Hilt_SingletonComponent*.class' ] } }
这些规则会过滤掉Hilt自动生成的组件类、工厂类以及所有在hilt包下的生成文件,确保覆盖率统计只针对你的业务代码。
二、IntelliJ IDEA单次测试配置
如果只是临时调整某次测试的覆盖率统计范围,可以直接在IDE的运行配置里设置:
- 点击顶部菜单栏的
Run->Edit Configurations - 在列表中找到你要调整的测试配置(比如单元测试类或方法)
- 切换到
Coverage标签页 - 在
Exclude patterns区域,点击+号添加以下规则:**/hilt/****/*Hilt*.class**/*_HiltComponents*.class**/*InjectorFactory*.class
- 保存配置后,再运行
Run test with coverage,就能看到干净的覆盖率报告了。
内容的提问来源于stack exchange,提问作者abhishek maharajpet
相关产品推荐
相关产品推荐

