DaggerTestApplicationComponent 未生成缺少绑定...对此不确定
DaggerTestApplicationComponent not generated missing binding...Unsure about this
Android Github repo api 使用 Dagger 应用构建调用应用,但我试图通过 运行 assemble[=52 生成 DaggerTestApplicationComponent =]测试,它用下面的堆栈跟踪打破了我
我试图将大部分主要 类 镜像为测试 类 但它让我在阅读堆栈跟踪时感到困惑,尤其是当它构建在某个地方时我接受我错了
请帮忙,欢迎指教。
应用程序组件-----------------------------
@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);
}
服务模块------------------------------------
@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 不知道如何获取实例,因为缺少 provides 方法或者你错过了 @Inject ScreenNavigator
构造函数的注解
Android Github repo api 使用 Dagger 应用构建调用应用,但我试图通过 运行 assemble[=52 生成 DaggerTestApplicationComponent =]测试,它用下面的堆栈跟踪打破了我
我试图将大部分主要 类 镜像为测试 类 但它让我在阅读堆栈跟踪时感到困惑,尤其是当它构建在某个地方时我接受我错了
请帮忙,欢迎指教。
应用程序组件-----------------------------
@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);
}
服务模块------------------------------------
@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 不知道如何获取实例,因为缺少 provides 方法或者你错过了 @Inject ScreenNavigator
构造函数的注解