簡體   English   中英

DaggerTestApplicationComponent沒有生成缺少的綁定…對此不確定

[英]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);
}

可以提供任何其他需要的類。

GitHub回購

謝謝

該錯誤基本上表明您正在嘗試注入

ScreenNavigator進入BaseActivity,但Dagger不知道如何獲取實例,原因是缺少提供方法,或者您錯過了ScreenNavigator構造函數的@Inject批注

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM