3
私はAndroidプロジェクトの計測テストを実装しようとしました。私の主なプロジェクトでは、短剣と改造を使用して、私のモジュールから改造を提供しています。MockWebServerを改造したものとダガー
これは改造を提供し、私のモジュールです:
@Module
public class NetModule {
@Provides
@Singleton
OkHttpClient.Builder provideOkHttpClientBuilder(){
OkHttpClient.Builder okHttp = new OkHttpClient.Builder();
HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
NoCacheInterceptor noCacheInterceptor = new NoCacheInterceptor();
interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
if (!okHttp.interceptors().contains(interceptor))
okHttp.addInterceptor(interceptor);
if (!okHttp.interceptors().contains(noCacheInterceptor))
okHttp.addInterceptor(noCacheInterceptor);
return okHttp;
}
@Provides
Retrofit provideRetrofit(OkHttpClient.Builder httpClient){
return new Retrofit.Builder()
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.addConverterFactory(GsonConverterFactory.create())
.baseUrl(Constant.BASE_URL)
.client(httpClient.build()).build();
}
}
はその後、私のandroidTestフォルダに、私は以下のようにMockWebServerと改造を提供するために、TestModuleを作成:
@Module
public class TestNetModule {
private final MockWebServer mockWebServer;
public TestNetModule() {
mockWebServer = new MockWebServer();
}
@Provides
@Singleton
MockWebServer providerMockWebServer() {
return new MockWebServer();
}
@Provides
@Singleton
OkHttpClient.Builder provideOkHttpClientBuilder(){
OkHttpClient.Builder okHttp = new OkHttpClient.Builder();
HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
NoCacheInterceptor noCacheInterceptor = new NoCacheInterceptor();
interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
if (!okHttp.interceptors().contains(interceptor))
okHttp.addInterceptor(interceptor);
if (!okHttp.interceptors().contains(noCacheInterceptor))
okHttp.addInterceptor(noCacheInterceptor);
return okHttp;
}
@Provides
Retrofit.Builder provideRetrofitBuilder(OkHttpClient.Builder httpClient, MockWebServer mockWebServer){
return new Retrofit.Builder()
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.addConverterFactory(GsonConverterFactory.create())
.baseUrl(mockWebServer.url("/").toString())
.client(httpClient.build()).build();
}
}
私は私のテストを実行したときに、私はいつもエラーandroid.os.NetworkOnMainThreadException
をコード.baseUrl(mockWebServer.url("/").toString())
で得る。テストのための改造とダガーを備えた適切な実装MockWebServerはどのようにしていますか?