【发布时间】:2017-04-13 22:56:50
【问题描述】:
我正在尝试为使用 Dagger2 的应用编写仪器测试。该应用程序有几种构建类型,其中一种称为自动化。自动化构建类型也在 build.gradle 中设置为 testBuildType。
我要测试的活动注入了一个依赖于存储库的 Presenter。我想做的是在构建除自动化之外的任何构建类型时注入一个真实的存储库,然后在构建自动化构建变体时注入一个模拟存储库。
在我的 androidTest 源集中,我创建了一个 MockComponent 和一个 MockModule,它们创建了一个模拟版本的存储库。我想我能做的是构建一个 MockComponent 实例并使用它来提供一个 Mock Repository。问题似乎是,如果 MockComponent 和 MockModule 在 androidTest 源集中,那么 Dagger 在我构建时永远不会生成 DaggerMockComponent 类。如果我将 MockComponent 和 MockModule 移动到自动化源集,那么 Dagger 确实会生成这些类,但是我现在想要向 MockComponent 添加一个注入方法,以便我可以将一个对象注入到我的活动测试类中,但 MockComponent 可以'看不到活动测试类,因为它在 android 源代码集中。
任何想法为什么 Dagger 在 androidTest 源集中时不会生成 DaggerMockComponent 类?
【问题讨论】: