动态绑定匕首2

时间:2015-04-23 20:07:31

标签: android dagger-2

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

我在测试期间使用Dagger在不同的层注入模拟(单元,功能设备及其间的所有内容)。

E.g。我有NetworkingModule,其中提供了HttpTransportServerConnector。对于某些测试,我只是模拟http层,对于其他我模拟ServerConnector,以及其他测试使用版本来测试与真实测试服务器的集成。

这些测试可以在所有构建版本上运行(调试,发布,...)。

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

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

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

提出不同的问题:是否可以在同一构建中编译多个模块以提供相同的注入?我怎样才能在运行时注入正确的模块?

有人可以请我为NetworkingModule

的示例草拟一个解决方案

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

THX。

1 个答案:

答案 0 :(得分:0)

找到解决方案:

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

我的模块只处理我实现的代理,并设置为在测试时注入模拟。这对于发布版本来说非常便宜。为了测试,我甚至可以为方便功能进行一些反思。