动态绑定匕首2
dynamic binding with dagger 2
我在将 Android 应用程序从 Dagger
迁移到 Dagger2
时遇到问题。
我在测试期间使用 Dagger 在不同层注入模拟(单元、功能设备以及介于两者之间的所有内容)。
例如我有一个 NetworkingModule
,它提供了一个 HttpTransport
和一个 ServerConnector
。对于某些测试,我只是模拟 http 层,对于其他人,我模拟 ServerConnector
,而其他测试使用版本 类 来测试与真实测试服务器的集成。
这些测试可以 运行 所有构建风格(调试、发布等)。
我只找到了 Dagger2
的描述,它为每个构建类型设置了一个静态注入配置——即一个发布组件绑定真实 类 和一个调试组件绑定一组模拟。
我需要找到一种方法让测试用例在应用程序启动阶段替换模块。
我怎样才能做到这一点?在我的想法中,当应用程序触发图形的构建时,我总是被卡住,它必须使用一个组件,该组件是某个接口的实现,该接口具有其模块的静态注释???
换个方式问:是否可以在同一版本中编译提供相同注入的多个模块?我将如何在 运行 时间注入正确的模块?
有人可以为我的 NetworkingModule
.
示例起草一个解决方案吗
顺便说一句:我大量使用 Espresso
、Robolectric
和 Mockito
。
谢谢。
找到解决方案:
我不需要构建特定的组件或模块。
我的模块只处理我为在测试时注入模拟而实现和设置的委托。这对于发布版本来说非常便宜。为了测试,我什至可以努力思考一些方便的功能。
我在将 Android 应用程序从 Dagger
迁移到 Dagger2
时遇到问题。
我在测试期间使用 Dagger 在不同层注入模拟(单元、功能设备以及介于两者之间的所有内容)。
例如我有一个 NetworkingModule
,它提供了一个 HttpTransport
和一个 ServerConnector
。对于某些测试,我只是模拟 http 层,对于其他人,我模拟 ServerConnector
,而其他测试使用版本 类 来测试与真实测试服务器的集成。
这些测试可以 运行 所有构建风格(调试、发布等)。
我只找到了 Dagger2
的描述,它为每个构建类型设置了一个静态注入配置——即一个发布组件绑定真实 类 和一个调试组件绑定一组模拟。
我需要找到一种方法让测试用例在应用程序启动阶段替换模块。
我怎样才能做到这一点?在我的想法中,当应用程序触发图形的构建时,我总是被卡住,它必须使用一个组件,该组件是某个接口的实现,该接口具有其模块的静态注释???
换个方式问:是否可以在同一版本中编译提供相同注入的多个模块?我将如何在 运行 时间注入正确的模块?
有人可以为我的 NetworkingModule
.
顺便说一句:我大量使用 Espresso
、Robolectric
和 Mockito
。
谢谢。
找到解决方案:
我不需要构建特定的组件或模块。
我的模块只处理我为在测试时注入模拟而实现和设置的委托。这对于发布版本来说非常便宜。为了测试,我什至可以努力思考一些方便的功能。