Retrofit 2.0-beta4を使用。
mainに定義
AppComponent.java
@Singleton
@Component(modules = {
AppModule.class,
NetworkModule.class
})
public interface AppComponent {
}
AppModule.java
@Module
public class AppModule {
@Singleton
@Provides
public Retrofit.Builder provideRetrofitBuilder(Call.Factory callFactory, Converter.Factory converterFactory) {
return new Retrofit.Builder()
.baseUrl(context.getString(R.string.host))
.callFactory(callFactory)
.addConverterFactory(converterFactory)
.addCallAdapterFactory(RxJavaCallAdapterFactory.create());
}
@Singleton
@Provides
public Converter.Factory provideConverterFactory() {
return GsonConverterFactory.create();
}
}
mock
NetworkModule.java
@Module
public class NetworkModule {
@Singleton
@Provides
public Call.Factory provideCallFactory(Context context) {
return new MockCallFactory(context);
}
}
※ MockCallFactoryはokhttp3.Call及びokhttp3.Call.Factoryを自前で実装。
staging
NetworkModule.java
@Module
public class NetworkModule {
@Singleton
@Provides
public Call.Factory provideCallFactory() {
return new OkHttpClient.Builder()
.addInterceptor(LoggingInterceptor.create())
.build();
}
}
production
NetworkModule.java
@Module
public class NetworkModule {
@Singleton
@Provides
public Call.Factory provideCallFactory() {
return new OkHttpClient.Builder()
.build();
}
}
参考
Leveraging product flavors in Android Studio for hermetic testing
隔離された環境でテストを行うために Android Studio でプロダクト フレーバーを活用する