0

Dagger我在将我的 Android 应用程序从Dagger2.

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

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

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

我只找到了对Dagger2每个构建类型设置单个静态注入配置的描述 - 即绑定真实类的发布组件和绑定一组模拟的调试组件。

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

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

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

有人可以为我的NetworkingModule.

顺便说一句:我大量使用Espresso,RobolectricMockito.

谢谢。

4

1 回答 1

0

找到了解决方案:

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

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

于 2015-04-26T00:04:01.220 回答