我想在我的Espresso测试中注入由dagger创建的组件。
组件应该是相同的,因此,没有必要覆盖任何匕首。
我有以下课程:
@RunWith(AndroidJUnit4.class)
public class AccountRepositoryTest {
@Inject
AccountRepository repository;
@Before
public void setUp() throws Exception {
new DaggerTestComponent().builder().build().inject(this);
}
}
由于我无法将AccountRepositoryTest添加到我的主DaggerComponent类,因此我在androidTests文件夹中创建了另一个组件类:
@Singleton
@Component(modules = arrayOf(AppModule::class, DatabaseModule::class, RepositoryModule::class))
interface TestComponent: AppComponent {
fun inject(accountRepositoryTest: AccountRepositoryTest)
}
但是dagger永远不会从TestComponent接口生成ComponentClass,当我编译代码时,我总是收到这个错误:
Error:(26, 7) error: cannot find symbol class DaggerTestComponent
如果我对该行进行评论,我的代码会编译,所以我确信这就是阻止匕首生成该类的原因。
所以我的问题是:make dagger如何从androidTests文件夹中定义的接口生成一个组件类?
答案 0 :(得分:2)
解决方案是将dagger-compiler添加到androidTest依赖项中。
如果您使用的是kotlin:
kaptAndroidTest "com.google.dagger:dagger-compiler:$daggerVersion"
如果您使用的是java:
androidTestAnnotationProcessor "com.google.dagger:dagger-compiler:$daggerVersion"