迁移到 Dagger 2.12 并测试模块覆盖

Migrating to Dagger 2.12 and test module overrides

我正在从 Dagger 2.0.2 迁移到 Dagger 2.12 并计划使用 dagger.android API。

我的问题是关于迁移测试代码。目前,我有一个 AppModule 和一个 TestAppModule 扩展它并使用 @Override 注释覆盖一些依赖项。这是一个例子:

@Module
public class TestAppModule extends AppModule {

    @Override
    public UserDao provideUserDao() {
        return mock(UserDao.class);
    }
}

现在使用 Dagger 2.12,如果我尝试覆盖 TestAppModule,抛出错误:error: @Provides methods may not be overridden in modules.

TestModule 中覆盖和模拟某些依赖项,同时利用 AppModule 中定义的其余依赖项的推荐方法是什么是?

如果人们认为有必要,我可以 post 我的 Dagger 设置的精简版本。

我最终通过简单地不使用 @Module 注释 TestAppModule 来解决它。这样就实现了部分mocking。

public class TestAppModule extends AppModule {

    @Override
    public UserDao provideUserDao() {
        return mock(UserDao.class);
    }
}