热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何从测试覆盖范围中排除Dagger2类

如何解决《如何从测试覆盖范围中排除Dagger2类》经验,为你挑选了1个好方法。

是否有任何选项可以从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 truebuildType,遗憾的是没有声明习惯的方法排除,因为Android的gradle这个插件没有提供这样的选项,和预定义的jacoco报告任务具有硬编码的排除.在这种情况下,您必须使用排除编写自己的任务脚本.


IntelliJ测试运行器

如果您正在使用IntelliJ测试运行器,无论覆盖是由IntelliJ还是JaCoCo完成,您都需要将包含用于测试配置.

    打开" 编辑配置"窗口:

编辑配置

    选择您的测试配置并定义包含(类或整个包).在这种情况下,我包括整个com.google.android.gms包,仅作为示例:

测试范围包括

排除 dagger生成的文件,最快的方法是将所有dagger依赖项放在一个根包中,并在测试配置中包含所有其他包.


推荐阅读
author-avatar
桑正青0V1
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有