1

나는 진짜 서비스 호출을 사용하여 로그인하는 두 번째 테스트 다음에 상태 코드 400을 반환하는 조롱 된 로그인 테스트를 먼저 실행하고 있습니다. 테스트는 다음과 같습니다.Android에서 mockwebserver를 조롱 한 후 실제 서버에 대한 호출을 테스트 할 수 없습니까?

@Test 
public void mock() throws IOException, InterruptedException { 
    MockWebServer server = new MockWebServer(); 
    server.enqueue(new MockResponse().setResponseCode(400)); 
    server.start(); 
    NetworkServiceHelper.init(String.valueOf(server.url("/"))); // Change retrofit baseUrl to localhost 

    loginWithoutWaiting(username, password); 

    server.shutdown(); 
} 

@Test 
public void real() { 
    NetworkServiceHelper.init(NetworkServiceHelper.DEFAULT_URL); // Change retrofit baseUrl to a real url 
    loginWithoutWaiting(username, password); 
} 

실제 서비스가 호출되지 않습니다. 글고 오류 메시지가

가 인증 할 수 없습니다 말한다 : localhost에 연결하지 못했습니다/127.0.0.1 :

public static synchronized void init(String serverUrl) { 

    // Override the GSON date format. 
    Gson gson = new GsonBuilder() 
      .setDateFormat("yyyy-MM-dd'T'HH:mm:ssZ") 
      .create(); 

    // We want to make the network calls asynchronous, so use createWithScheduler() 
    RxJavaCallAdapterFactory rxAdapter = RxJavaCallAdapterFactory.createWithScheduler(Schedulers.io()); 

    // Finally, build the Retrofit client. 
    retrofit = new Retrofit.Builder() 
      .baseUrl(serverUrl) 
      .addConverterFactory(GsonConverterFactory.create(gson)) 
      .addCallAdapterFactory(rxAdapter) 
      .client(buildClient()) 
      .build(); 
} 
: 50162 여기에

는 개조 인스턴스를 초기화 NetworkServiceHelper.init() 함수

답변

0

는 게으르게 방법을

@Rule 
    public ActivityTestRule<EmergencyMainActivity> mActivityTestRule = 
      new ActivityTestRule<>(EmergencyMainActivity.class, true, false); 
을 다음과 같이 활동을 호출하는지 확인

을 입력 한 다음 서버 네트워크 호출을 설정 한 후 활동을 호출하십시오.