作者:桑正青0V1 | 来源:互联网 | 2023-02-10 10:12
是否有任何选项可以从Android Studio中的测试覆盖率报告中排除Dagger2类
1> maciekjanusz..:
JaCoCo排除
如果你正在使用JaCoCo,例如使用android instrumentation connected测试,你需要配置排除(或包括),根据文档是......
要从报告中排除的类文件列表.可以使用通配符(*和?).未指定时,不会排除任何内容.
这意味着您需要匹配生成的匕首类名称.以下规则几乎涵盖了由dagger-compiler
任何未生成的类生成的任何类(除非您将类命名为与dagger相同...):
excludes = [
'**/*_MembersInjector.class',
'**/Dagger*Component.class', // covers component implementations
'**/Dagger*Component$Builder.class', // covers component builders
'**/*Module_*Factory.class'
]
app/build/generated/source/apt
运行构建后,您可以在目录中检查生成的dagger类,以查看是否有任何其他要生成的类与排除匹配.
这不包括数组是jacoco插件的配置属性.现在,放置此excludes
数组的位置取决于您是基于jacoco插件定义自己的任务,还是使用为您执行此操作的"更高级别插件".例如,使用此插件(您可以看到插件源以查看实际应用排除的位置):
jacocoAndroidUnitTestReport {
excludes += [
'**/*_MembersInjector.class',
'**/Dagger*Component.class',
'**/Dagger*Component$Builder.class',
'**/*Module_*Factory.class'
]
}
连接测试
如果你通过设置运行Android连接测试覆盖率testCoverageEnabled true
在buildType,遗憾的是没有声明习惯的方法排除,因为Android的gradle这个插件没有提供这样的选项,和预定义的jacoco报告任务具有硬编码的排除.在这种情况下,您必须使用排除编写自己的任务脚本.
IntelliJ测试运行器
如果您正在使用IntelliJ测试运行器,无论覆盖是由IntelliJ还是JaCoCo完成,您都需要将包含用于测试配置.
打开" 编辑配置"窗口:
选择您的测试配置并定义包含(类或整个包).在这种情况下,我包括整个com.google.android.gms
包,仅作为示例:
要排除 dagger生成的文件,最快的方法是将所有dagger依赖项放在一个根包中,并在测试配置中包含所有其他包.