Dagger 2 robolectric测试没有编译

时间:2016-04-21 14:19:55

标签: android unit-testing dependency-injection robolectric dagger-2

我写了一些测试,但是dagger 2给了我这样的错误:

错误:(83,90)错误:不兼容的类型:MembersInjector无法转换为Provider

错误:(92,70)错误:类ArtistAapter_MembersInjector中的方法创建无法应用于给定类型; 必需:提供者 发现:MembersInjector,Provider 原因:实际和正式的参数列表长度不同

我使用Mockito

编写了测试模块和组件

PresenterTestModule

@Provides
@Singleton
Model provideModel() {
    return mock(Model.class);
}

@Provides
CompositeSubscription provideCompositeSubscription() {
    return new CompositeSubscription();
}

ModelTestModule

private TestUtils testUtils;

public ModelTestModule() {
    testUtils = new TestUtils();
}

@Provides
@Singleton
ApiInterface provideApiInterface() {
    return mock(ApiInterface.class);
}

@Provides
@Singleton
@Named(Const.UI_THREAD)
Scheduler provideSchedulerUI() {
    return Schedulers.immediate();
}

@Provides
@Singleton
@Named(Const.IO_THREAD)
Scheduler provideSchedulerIO() {
    return Schedulers.immediate();
}

@Provides
@Singleton
List<Artist> provideArtistList() {
    Artist[] artists = testUtils.getGson().fromJson(testUtils.readString("raw/test.json"), Artist[].class);
    return Arrays.asList(artists);
}

...

TestAppComponent

@Singleton
@Component(modules = {ModelTestModule.class, PresenterTestModule.class, ViewTestModule.class, AppTestModule.class, UtilsTestModule.class, PicassoTestModule.class})
public interface TestComponent extends AppComponent {
    void inject(ArtistListPresenterTest presenterTest);
    void inject(ModelImplTest modelImplTest);
}

我不明白为什么测试没有编译,我使用this作为示例,但出了点问题

UPD:问题解决了将dagger 2版本从2.2降级到2.0

0 个答案:

没有答案