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

2024-02-10

是否有任何选项可以从 Android Studio 的测试覆盖率报告中排除 Dagger2 类


JaCoCo 排除

如果您使用 JaCoCo,例如使用 android 仪器连接测试,您需要配置excludes(或包括),根据文档 http://www.eclemma.org/jacoco/trunk/doc/report-mojo.html#excludes is...

要从报告中排除的类文件的列表。可以使用通配符(* 和 ?)。如果未指定,则不会排除任何内容。

这意味着您需要匹配生成的匕首类名称。以下规则几乎涵盖了由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运行构建后的目录,以查看是否有任何您想要与排除匹配的其他生成的类。

This excludesarray 是 jacoco 插件的配置属性。现在,把这个放在哪里excludesarray 取决于您是基于 jacoco 插件定义自己的任务,还是使用为您执行此操作的“更高级别的插件”。例如使用这个插件 https://github.com/arturdm/jacoco-android-gradle-plugin(您可以查看插件源以查看排除的实际应用位置):

jacocoAndroidUnitTestReport {
  excludes +=  [
        '**/*_MembersInjector.class',
        '**/Dagger*Component.class',
        '**/Dagger*Component$Builder.class',
        '**/*Module_*Factory.class'
    ]
}

连接测试

如果您通过设置运行 android 连接测试覆盖率testCoverageEnabled true在你的构建类型,不幸的是没有惯用的方式来声明excludes,自从Android Gradle 插件 https://google.github.io/android-gradle-dsl/current/不提供这样的选项,并且预定义的jacoco报告任务 https://android.googlesource.com/platform/tools/base/+/03842a2bd83ffcee6c1b8649ae6dbe038e29bf2c/build-system/gradle/src/main/groovy/com/android/build/gradle/internal/coverage/JacocoReportTask.groovy已排除硬编码。在这种情况下,您必须编写自己的任务脚本excludes.


IntelliJ 测试运行器

如果您使用 IntelliJ 测试运行程序,无论覆盖率是由 IntelliJ 还是 JaCoCo 完成,您都需要将includes用于测试配置。

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

To excludedagger 生成的文件,最快的方法是将所有 dagger 依赖项放在一个根包中,并且include一切other测试配置中的包。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从测试覆盖率中排除 Dagger2 类 的相关文章

  • Android RecyclerView 空白

    我有一个 android 项目 我正在使用 Recycler 视图打印包含项目的列表 每个项目只有一个图像 并且在这些图像之间 android 正在创建一个很大的空白空间 我研究并看到即将将布局更改为wrap content 我更改了回收器
  • Android 相机 - 将图像保存到 SD 卡中的新文件夹中

    我有一个非常简单的应用程序 目前可以拍照然后保存图像 目前的问题是 由于某种原因 我无法找到图像在手机上的保存位置 我想要做的最终结果是 当拍摄照片时 图像会保存到 SD 卡上创建的新文件夹中 但如果该文件夹尚不存在 则必须创建该文件夹 自
  • 如何在 Android 中恢复我的音频?

    我必须实现用于创建具有暂停和恢复状态的音频的应用程序 当我的应用程序作为启动时音频启动 当我按下模拟器上的后退按钮时 音频音乐处于暂停状态 但是当我的活动回来时从停止状态到前台我的音频音乐未恢复 这是我的代码 public class Au
  • Android Json结果处理

    我有这样的 Json 结果 array getJSONObject j 执行代码 WAT2 FreeIssuePrefix DisPaySchedulePrefix NextFreeIssueNo 1 NextReturnNo 20 Upl
  • 底页横向问题

    在横向模式下显示底部工作表对话框时 我遇到了错误的行为 该问题出现在24 版本的设计库中 根据下图 底页仅在横向模式下无法正确显示 我正在使用 BottomSheetDialog 类 并且正在遵循本教程 http www skholingu
  • 没有这样的属性:类的variantConfiguration:

    升级 gradle 4 0 0 应用程序构建失败后 出现错误消息 没有这样的属性 类的variantConfiguration com android build gradle internal variant ApplicationVar
  • 找不到与给定名称匹配的资源:attr 'android:keyboardNavigationCluster'。更新到支持库 26.0.0 时

    我在更新到最新支持库版本 26 0 0 时遇到此问题 https developer android com topic libraries support library revisions html 26 0 0 https devel
  • Android Studio 在 Make Project 期间不会编译 Java 库模块的测试类

    我在 Android Studio 2 2 3 中有一个多项目 Gradle 构建 包含 Java 库 core and codegen 和 Android 库 android 模块 Make Project在 Gradle 控制台中显示已
  • Android 防火墙与 VpnService

    我正在尝试使用 BS 项目的 VpnService 为 Android 实现一个简单的防火墙 我选择 VpnService 因为它将在非 root 设备上运行 它将记录连接并让您过滤连接 基于IP 有一个应用程序可以做到这一点 因此这是可能
  • Android Studio 找不到 com.android.support:support-v4:19.1.0

    我已将一个项目导入Android Studio但我收到错误 找不到 com android support support v4 19 1 0 我在哪里可以找到这个文件 我已经使用导入了项目Gradle 我有Android Studio v
  • 大型 XML 的 XML 节点到字符串转换

    到目前为止我一直在使用DOM源在我的 Android 应用程序中将 XML 文件转换为字符串 这是我的代码 public String convertElementToString Node element throws Transform
  • 在android API 23中获取用户的位置

    我可以编写获取用户位置的代码 并且在 API 更多细节 我手动启用设备的 GPS 第一次运行应用程序请求权限并且没有日志返回 在下次运行应用程序时 返回我准备好的 Toast 检查您的提供商 这是我写的代码 public class Mai
  • 评级栏更改星星颜色而不使用自定义图像

    有什么办法可以改变星星的颜色吗 我不想使用自定义图像来实现它 您可以将这些行添加到创建方法中 RatingBar ratingBar RatingBar findViewById R id ratingBar LayerDrawable s
  • android形状xml旋转可绘制以编程方式改变颜色

    这是三角形的 xml
  • 蓝牙权限在 jetpack compose 中无法正常工作

    我在用com google accompanist accompanist permissions 0 25 1在我的项目中 我正在尝试在运行时请求蓝牙权限 我想知道用户如何知道权限被永久禁用 清单 xml
  • 未从线程接收位置数据

    我尝试使用计时器经常发送包含用户位置的短信 最初 我遇到了空指针异常 这是由于我犯了一个简单的错误 一旦解决了这个问题 一切似乎都运行良好 但是 它永远不会获取我的位置 因此 不断发送的文本显示 无法接收位置 我想问的是为什么它无法获取我的
  • ListView 上的 setOnItemClickListener 不会触发

    我获取 SD 卡的文件列表 并将其显示在 listView 中 就像在自定义适配器的帮助下一样 adapter new ArrayAdapter
  • 如何获取 Android 应用程序的 Google Places API 密钥

    在过去的 48 小时里 我绞尽脑汁试图找到这个问题的答案 问这个问题的人 如何为 Google Places api 制作 API KEY https stackoverflow com questions 23128152 how can
  • Android facebook api,获取不同尺寸的头像

    我正在使用相对较新的 Facebook 图形 api 我正在获取使用该应用程序的朋友列表及其个人资料照片 我不知道如何修改我发送的参数 以便返回的图片很大 当前返回的默认值很小 我正在使用 newMyFriendsRequest 我发送的参
  • 如何更改区域设置以使用拉丁塞尔维亚语(而不是西里尔塞尔维亚语)

    塞尔维亚语有拉丁字母和西里尔字母 在 Android 的日期和时间选择器小部件中 显示的塞尔维亚语言区域字母似乎是西里尔字母 如此处所示 我想更改区域设置 以便 Android 小部件使用拉丁塞尔维亚字母 当前的语言 国家代码 产生西里尔字

随机推荐