gpt4 book ai didi

android - 使用 Dagger2 注入(inject)的 Espresso 测试

转载 作者:行者123 更新时间:2023-11-29 19:09:02 26 4
gpt4 key购买 nike

我想在我的 Espresso 测试中注入(inject)由 dagger 创建的组件。

组件应该相同,因此没有必要覆盖 dagger 中的任何内容。

我有以下类(class):

@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 接口(interface)生成 ComponentClass,当我编译代码时,我总是收到这个错误:

Error:(26, 7) error: cannot find symbol class DaggerTestComponent

如果我注释该行,我的代码会编译,所以我确信正是它阻止了 dagger 生成类。

所以我的问题是:如何使 dagger 从 androidTests 文件夹中定义的接口(interface)生成组件类?

最佳答案

解决方案是将 dagger-compiler 添加到 androidTest 依赖项。

如果您使用的是 Kotlin :

kaptAndroidTest "com.google.dagger:dagger-compiler:$daggerVersion"

如果您使用的是 java:

androidTestAnnotationProcessor "com.google.dagger:dagger-compiler:$daggerVersion"

关于android - 使用 Dagger2 注入(inject)的 Espresso 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46065486/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com