【问题标题】:How to mock Dagger activity object graphs?如何模拟 Dagger 活动对象图?
【发布时间】:2025-11-30 16:50:01
【问题描述】:

我在一个 android 应用程序中使用 Dagger 来提供应用程序和活动范围图。我正在使用 Robolectric 进行单元测试。我知道我可以为 Robolectric 提供一个替代 Application 类,该类配置有一个应用程序对象图,该对象图用模拟覆盖真实的。但是我对如何对活动对象图做同样的事情感到困惑,因为活动对象图的标准模式是让活动本身实例化他们需要的特定于活动的 Dagger 模块。任何建议将不胜感激。

【问题讨论】:

  • 如果activity处理自己的依赖,为什么还需要dagger?
  • 您可以使方法 getModule() 可用于覆盖,并且在测试中具有扩展您的活动类但为您的测试提供特定模块的活动类
  • @EugenMartynov 第一个问题:根据 Dagger 推荐的活动范围对象图模式 (example),每个活动负责使用 Dagger 从模块创建对象图。跨度>
  • @EugenMartynov 我想到了扩展 Activity 类并覆盖 getModule 的建议,但我想知道这对于测试设计而言是否不是“坏”的事情。这不是我在其他情况下看到的。但我很想,因为这将是最简单的解决方案。你怎么看?
  • 对不起,耽搁了这么久,至于我,我更喜欢更清洁的解决方案。但对于 Android,有时很难实现,因为我们无法完全控制活动生命周期。我会从这个开始让事情顺利进行。

标签: android unit-testing robolectric dagger


【解决方案1】:

请看看我的项目 - https://github.com/emartynov/UrlSetter

你会发现我是如何在Dagger 测试中使用模拟和Robolectric

【讨论】:

    最近更新 更多