使用 Dagger2 时创建测试依赖项

2023-12-22

在阅读 dagger 2 的文档时,我找不到在构建测试应用程序时提供依赖项的简单方法。我发现的唯一线索是:

Dagger 2 不支持覆盖。模块 覆盖简单测试假货可以创建 模块的子类来模拟该行为。 使用覆盖并依赖依赖注入的模块 应该被分解,以便被覆盖的模块被替换 表示为两个模块之间的选择。

我不明白如何在 Android 上设置这样的配置,有人可以解释一下吗?


目前,如果没有一些解决方法,Dagger 2(从 v2.0.0 开始)这是不可能的。你可以阅读相关内容here https://github.com/google/dagger/issues/110.

我已经提议了一种解决方法 https://stackoverflow.com/questions/26939340/how-do-you-override-a-module-dependency-in-a-unit-test-with-dagger-2-0/29996385#29996385但这需要更改生产代码。

简而言之:

  • 提供额外的设置器@Component(例如,在 Android setter 中Application class)
  • 测试组件必须扩展生产组件

欲了解更多信息,请检查这两个链接。希望 Dagger 2 的未来版本能够解决这个问题。

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

使用 Dagger2 时创建测试依赖项 的相关文章

  • Android Studio 3.0 Canary 9 - 无法解析包

    我在 Android Studio 3 0 Canary 9 中遇到几个错误 这些错误是 无法解析 android 软件包 下面列出了一些错误 我刚刚安装了 SDK 的所有额外软件包 但仍然收到 gradle 构建错误 Error 82 1
  • 使用workmanager时Firestore脱机持久性错误

    我正在使用一个WorkManger定期从我的中检索信息Firestore当应用程序处于后台和前台时的数据库 此信息用于根据状态更新 UI 因此不同的状态会添加或删除 UI 的不同部分 第一次运行时效果很好 但是 一旦应用程序处于后台并且Wo
  • React Native 从 JavaScript 代码内部访问 strings.xml

    有没有办法访问当前值android app src main res values strings xml从 JavaScript 代码内部 我想为每个构建放置不同的端点 URL 但我什至无法检测到反应本机代码内的构建类型 而不必求助于 D
  • SearchView过滤ListView

    我已经实现了搜索视图来过滤我的列表视图项目 当我输入任何文本时 它会过滤列表 但当我退出搜索视图时 它不会返回原始列表项 public class PlacesListAdapter extends ArrayAdapter
  • 找不到 com.google.firebase:firebase-core:9.0.0 [重复]

    这个问题在这里已经有答案了 在遵循有些不一致的指示之后here https firebase google com docs admob android quick start name your project and here http
  • 谷歌坐标认证

    当我尝试连接到 Google 坐标时 总是出现异常GoogleAuthException 我拥有 Google 地图协调中心许可证 我确实使用我的包应用程序名称和 SHA1 在 google 控制台中创建了我的客户端 ID 我将权限添加到清
  • 如何以编程方式检查 AndroidManifest.xml 中是否声明了服务?

    我正在编写一个库 该库提供了一项服务 其他开发人员可以通过将其包含在他们的项目中来使用该服务 因此 我无法控制 AndroidManifest xml 我在文档中解释了要做什么 但一个常见的问题是人们忽略了将适当的 标记添加到其清单中 或者
  • android xamarin 中的 reCaptcha

    我想在 Xamarin android 应用程序中实现验证码 我抓住了这个在 Android 中集成 googles reCaptcha 验证 https www c sharpcorner com article how to integ
  • CollapsingToolBarLayout - 状态栏稀松布颜色不改变

    几天前我更新了我的 android studio 并开始使用 CoordinatorLayout 和 CollapsingToolbarLayout 只是尝试一些东西 工具栏稀松布颜色似乎覆盖了状态栏初始颜色和状态栏稀松布颜色 从 xml
  • 在 HTTPResponse Android 中跟踪重定向

    我需要遵循 HTTPost 给我的重定向 当我发出 HTTP post 并尝试读取响应时 我得到重定向页面 html 我怎样才能解决这个问题 代码 public void parseDoc final HttpParams params n
  • 获取当前 android.intent.category.LAUNCHER 活动的实例

    我创建了一个库项目 并在多个应用程序之间共享 我实现了一个简单的会话过期功能 该功能将在一段时间后将用户踢回到登录屏幕 登录屏幕活动是我的主要活动 因此在清单中它看起来像这样
  • 如何默认在 ActionOpenDocument 意图中显示“内部存储”选项

    我需要用户选择一个自定义文件类型的文件 并将其从 Windows 文件资源管理器拖到 Android 设备上 但默认情况下内部存储选项不可用 当我使用以下命令启动意图时 var libraryIntent new Intent Intent
  • 在 android DatePickerDialog 中将语言设置为法语

    有什么办法可以让日期显示在DatePickerDialog用法语 我已经搜索过这个但没有找到结果 这是我的代码 Calendar c Calendar getInstance picker new DatePickerDialog Paym
  • 字符串数组文本格式化

    我有这个字符串 String text Address 1 Street nr 45 Address 2 Street nr 67 Address 3 Street nr 56 n Phone number 000000000 稍后将被使用
  • .isProviderEnabled(LocationManager.NETWORK_PROVIDER) 在 Android 中始终为 true

    我不知道为什么 但我的变量isNetowrkEnabled总是返回 true 我的设备上是否启用互联网并不重要 这是我的GPSTracker class public class GPSTracker extends Service imp
  • Android:膨胀布局时出现 StackOverFlowError 和 InvokingTargetException

    首先 对不起我的英语 我在膨胀布局时有一个问题 我有一个自定义视图 从 LinearLayout 扩展而来 称为按钮帮助 我在名为的布局上使用该视图加载活动 我的以下代码在所有设备和模拟器上都能完美运行 但具有 QVGA 屏幕 例如 Sam
  • 一次显示两条Toast消息?

    我希望在一个位置显示一条 Toast 消息 并在另一位置同时显示另一条 Toast 消息 多个 Toast 消息似乎总是按顺序排队和显示 是否可以同时显示两条消息 是否有一种解决方法至少可以提供这种外观并且不涉及扰乱活动布局 Edit 看来
  • Firebase 添加新节点

    如何将这些节点放入用户节点中 并创建另一个节点来存储帖子 我的数据库参考 databaseReference child user getUid setValue userInformations 您需要使用以下代码 databaseRef
  • Crashlytics 出现 Android Studio 构建错误

    我正在尝试将 CrashLytics 与 Android Studio 和 gradle 一起使用 但出现一个令人困惑的错误 java lang NoSuchMethodError 我的 build gradle 是 buildscript
  • 强制 Listview 不重复使用视图(复选框)

    我做了一个定制Listview 没有覆盖getView 方法 Listview 中的每个项目都具有以下布局 联系布局 xml

随机推荐

  • 如何禁用带有参数的路由的csrf保护?

    有一条路线 如 Route post user id update UserController update 我想禁用它的 csrf 保护 但我不知道如何将其 uri 添加到except array 您可以将给定的代码添加到VerifyC
  • Android自定义View(TextView+Button+一些自定义行为)?

    这应该很容易做到 但不知何故 经过 15 分钟的搜索 我仍然无法得到答案 我想制作一个结合 TextView 和 Button 的自定义 Android 视图 加上一些自定义行为 方法 假设当我单击按钮时 它应该将 TextView 更改为
  • 如何从内部关闭线程?

    对于连接到我的服务器的每个客户端 我都会生成一个新线程 如下所示 Create a new client c Client self server accept globQueue globQueueIndex globQueueIndex
  • 如何获取最新版本的代码?

    我正在使用 Git 1 7 4 1 我想从存储库获取最新版本的代码 但出现错误 git pull M selenium ant build properties M selenium scripts linux get latest upd
  • Hyperledger Fabric:使用fabric-ca-client(Javascript)注册并注册新的对等身份

    在fabric ca的文档中只有身份创建的CLI描述 使用nodejs模块 fabric ca client 我们可以使用以下方法注册和注册新用户 fabric ca client register enrollmentID user1 a
  • 将多个 .txt 文件作为数据帧加载到 python 中

    我正在努力将多个 txt 文件加载到桌面上的 python 中 我对 Python 完全陌生 我的目标是加载多个 txt 文件 这些文件保存在同一目录中 txt 文件是纯文本 在此先感谢您的帮助 你可以做这样的事情 from collect
  • Node.JS 请求 - 无效 URI“/”

    我在用着request在我的应用程序中发送POST通过 HTTPS 进行客户端身份验证的请求 请求总是抛出错误Error Invalid URI 我无能为力解决这个问题 我尝试使用 url parse 而不是传递字符串 但它仍然是相同的 r
  • 为什么在 C++ 中使用 = 来初始化原始类型?

    在我工作的地方 人们大多认为对象最好使用 C 风格的构造 带括号 来初始化 而原始类型应该使用 运算符来初始化 std string strFoo Foo int nBar 5 不过 似乎没有人能够解释为什么他们更喜欢这种方式 我理解了st
  • 当对象移动到特定帧时如何停止 UIPanGestureRecognizer

    我有一个使用 UIPanGestureRecognizer 移动的图像类型的对象 当该对象到达特定帧时 我需要停止识别 UIPanGestureRecognizer UIPanGestureRecognizer panRecognizer
  • CIContext 渲染:toCVPixelBuffer:边界:colorSpace:函数不适用于具有 Alpha 通道的图像

    我正在尝试在使用 AVFoundation 的 AVCaptureVideoDataOutput 录制的视频上添加水印 徽标 我遇到的问题是 一旦写入视频 UIImage 的透明部分就会变成黑色 我做错了什么 CVPixelBufferRe
  • Robospice 使用 SpringAndroidSpiceRequest 上传文件

    我正在与 robospice 合作 现在我想上传文件 我使用 SpringAndroidSpiceService 并编写我自己的请求 如下所示 public class UploadFileRequest extends SpringAnd
  • 如何在 IE9 中检查元素上的事件侦听器

    我有一个页面 其中的表格中有一些 td 元素 用户可以单击并拖动这些元素来重新排序 该页面是使用原型构建的 在除 IE9 之外的所有版本中 这都有效 但在 IE9 中 当我尝试单击并拖动时 我只是突出显示页面上的一些内容 我怀疑处理程序实际
  • R:更新悬停文本

    我正在使用 R 编程语言 我使用plotly库制作了以下交互式图表 library dplyr library ggplot2 library shiny library plotly library htmltools library d
  • 如何以编程方式实时读取logcat?

    我有一个服务想要从服务启动时从 logcat 读取数据 即在服务启动之前丢弃 logcat 数据 实时监视 logcat 数据 过滤 logcat 以仅显示 ActivityManager 标签和信息日志 然后我想根据过滤后的 logcat
  • SWT - ScrolledComposite 内多行文本字段的计算大小

    我在 ScrolledComposite sc 中有一个合成 innerComposite 在运行时 可以添加额外的 UI 组件 因此 我使用下面的代码来设置 sc 的最小大小以启用滚动 以防其他 UI 组件 溢出 sc sc setMin
  • 为什么 jQuery.ajax() 在 url 中添加参数?

    我有一个数据获取方法 使用jQuery ajax 获取 xml 文件 data function
  • VueJS 点击在移动设备上不起作用,未检测到点击侦听器

    我试图找出 VueJS 在点击侦听器上的问题出在哪里 所以这里我有一个用户可以选择的可能语言列表 EN FR IT 这个列表被包装成 div 通过使用点击侦听器显示或隐藏列表 问题是它仅适用于桌面而不适用于移动设备 这是我拍摄的一些视频 向
  • 如何使用asp.net打开、编辑和保存word文档

    我想通过ASP Net从数据库中获取一个word文档并将其显示在Internet Explorer上 然后我想编辑一些文本并将该文档替换为原始文档 与Sharepoint完全相同 Man Word了解该文档来自Sharepoint 当用户更
  • 在设置中使用自己的枚举

    我想在项目设置中使用我自己的枚举 来自 Visual studio 菜单项目 属性 选项卡设置 我可以在那里选择很多默认类型 甚至可以选择解决方案中其他项目的类型 但不能选择项目本身 是否可以使用项目本身的枚举类型作为设置的类型 是的 但是
  • 使用 Dagger2 时创建测试依赖项

    在阅读 dagger 2 的文档时 我找不到在构建测试应用程序时提供依赖项的简单方法 我发现的唯一线索是 Dagger 2 不支持覆盖 模块 覆盖简单测试假货可以创建 模块的子类来模拟该行为 使用覆盖并依赖依赖注入的模块 应该被分解 以便被