Я провожу юнит-тест с android dagger2
и roboletric
,, но объекты, которые я добавляю, null
.Вот код:
@RunWith(RobolectricTestRunner.class)
public class ExampleUnitTest {
@Inject
MemberService memberService;
@Before
public void setUp() {
Application application = RuntimeEnvironment.application;
DaggerConfigComponent.builder().configModule(new ConfigModule(application))//provide retrofit okhttpclient
.serviceModule(new ServiceModule())//provide Memberservice
.build().inject(this);
}
@Test
public void test(){
//user memberservice, but it is null
}
}
configComponent включает в себя ConfigModule
и ServiceModule
@Singleton
@Component(modules = {ConfigModule.class, ServiceModule.class})
public interface ConfigComponent {
void inject(Object o);
}
ConfigModule
@Module(includes = {DaoSessionModule.class, ServiceModule.class})
public class ConfigModule {
private Application application;
public ConfigModule(Application application) {
this.application = application;
}
@Singleton
@Provides
public Application provideApplication() {
return this.application;
}
@Singleton
@Provides
public OkHttpClient provideOkHttpClient(Cache cache, HttpLoggingInterceptor loggingInterceptor) {
OkHttpClient.Builder builder = new OkHttpClient().newBuilder();
builder.cache(cache);
if (BuildConfig.DEBUG) {
builder.connectTimeout(30, TimeUnit.SECONDS);
builder.readTimeout(30, TimeUnit.SECONDS);
builder.writeTimeout(30, TimeUnit.SECONDS);
}
return builder.build();
}
@Singleton
@Provides
public Retrofit provideRetrofit(OkHttpClient okHttpClient) {
return new Retrofit.Builder()
.baseUrl(BuildConfig.BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.client(okHttpClient)
.build();
}
}
ServiceModule предоставить MemberService
@Module
public class ServiceModule {
@Singleton
@Provides
public MemberService provideMemberService(Retrofit retrofit) {
return retrofit.create(MemberService.class);
}
}
Это мой код, надеюсь, вы можете мне помочь.Может быть, я использовал устройство неправильно?