我写了一些测试,但是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