【问题标题】:dynamic binding with dagger 2与匕首 2 的动态绑定
【发布时间】:2015-04-26 08:04:01
【问题描述】:

我在将我的 Android 应用从 Dagger 迁移到 Dagger2 时遇到问题。

我在测试期间使用 Dagger 在不同层(单元、功能设备以及介于两者之间的所有内容)注入模拟。

例如我有一个NetworkingModule,它提供了一个HttpTransport 和一个ServerConnector。对于某些测试,我只是模拟 http 层,对于其他测试,我模拟 ServerConnector,而其他测试使用发布类来测试与真实测试服务器的集成。

这些测试可以在所有构建风格(调试、发布等)上运行。

我只发现了 Dagger2 的描述,它为每个构建类型设置了一个静态注入配置 - 即一个用于绑定真实类的发布组件和一个用于绑定一组模拟的调试组件。

我需要找到一种方法让测试用例在应用程序启动阶段替换模块。

我怎样才能做到这一点?在我的想法中,当应用程序触发构建图时,我总是陷入困境,它必须使用一个组件,该组件是某个接口的实现,该接口具有其模块的静态注释???

换个说法:是否可以在同一个构建中编译多个提供相同注入的模块?然后我将如何在运行时注入正确的模块?

有人可以为我的NetworkingModule 示例起草一个解决方案吗?

顺便说一句:我大量使用EspressoRobolectricMockito

谢谢。

【问题讨论】:

    标签: android dagger-2


    【解决方案1】:

    找到解决办法:

    我不需要构建特定的组件或模块。

    我的模块只处理我为在测试时注入模拟而实现和设置的委托。这对于发布版本来说非常便宜。对于测试,我什至可以考虑一些便利功能。

    【讨论】:

    • 能否提供一个代码示例,您是如何做到的?
    猜你喜欢
    • 2020-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-04
    • 2015-01-17
    相关资源
    最近更新 更多