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文件夾中,我創建TestModule提供改造與MockWebServer象下面這樣:
@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();
}
}
當我跑我的測試,我總是在代碼.baseUrl(mockWebServer.url("/").toString())
處得到錯誤android.os.NetworkOnMainThreadException
。如何正確地實施MockWebServer的改進和匕首測試?