[英]DaggerTestApplicationComponent not generated missing binding…Unsure about this
Android Github repo api調用使用Dagger應用程序構建的應用程序,但我試圖通過運行assembleAndroidTest生成DaggerTestApplicationComponent,並使用以下stacktrace破壞了我
我試圖將大多數主要類鏡像為測試類,但是它使我無法閱讀堆棧跟蹤,尤其是當它建立在我接受的地方時,我錯了
請幫忙,歡迎指教。
ApplicationComponent -------------------------------
@Singleton
@Component(modules = {
ApplicationModule.class,
ActivityBindingModule.class,
ServiceModule.class,
RepoServiceModule.class,
})
public interface ApplicationComponent {
void inject(MyApplication myApplication);
}
ApplicationModule ------------------------------
@Module
public class ApplicationModule {
private final Application application;
ApplicationModule(Application application) {
this.application = application;
}
@Provides
Context provideApplicationContext() {
return application;
}
}
ActivityBindingModule -----------------------------
@Module(subcomponents = {
MainActivityComponent.class
})
public abstract class ActivityBindingModule {
@Binds
@IntoMap
@ActivityKey(MainActivity.class)
abstract AndroidInjector.Factory<? extends Activity> provideMainActivityInjector (MainActivityComponent.Builder builder);
}
ServiceModule -------------------------------------
@Module(includes = NetworkModule.class)
public abstract class ServiceModule {
@Provides
@Singleton
static Moshi provideMoshi() {
return new Moshi.Builder()
.add(AdapterFactory.create())
.add(new ZoneDateTimeAdapter())
.build();
}
@Provides
@Singleton
static Retrofit provideRetrofit(Moshi moshi, Call.Factory callFactory, @Named("base_url") String baseUrl) {
return new Retrofit.Builder()
.callFactory(callFactory)
.addConverterFactory(MoshiConverterFactory.create(moshi))
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.baseUrl(baseUrl)
.build();
}
}
RepoServiceModule -----------------------------
@Module
public abstract class RepoServiceModule {
@Provides
@Singleton
static RepoService provideRepoService(Retrofit retrofit) {
return retrofit.create(RepoService.class);
}
}
我已經創建了一些反映這些測試類的測試類(這是我認為的問題...。)。
TestApplicationComponent -------------------------
@Singleton
@Component(modules = {
ApplicationModule.class,
TestActivityBindingModule.class,
TestRepoServiceModule.class,
ServiceModule.class,
})
public interface TestApplicationComponent extends ApplicationComponent {
}
TestActivityBindingModule -------------------------
@Module(subcomponents = {
TestMainActivityComponent.class,
})
public abstract class TestActivityBindingModule {
@Binds
@IntoMap
@ActivityKey(MainActivity.class)
abstract AndroidInjector.Factory<? extends Activity> bindMainActivityInjector(TestMainActivityComponent.Builder builder);
}
TestRepoServiceModule ---------------------------
@Module
public abstract class TestRepoServiceModule {
@Binds
abstract RepoService bindRepoService(TestRepoService repoService);
}
可以提供任何其他需要的類。
謝謝
該錯誤基本上表明您正在嘗試注入
ScreenNavigator進入BaseActivity,但Dagger不知道如何獲取實例,原因是缺少提供方法,或者您錯過了ScreenNavigator構造函數的@Inject批注
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.