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); 
} 

真实的服务不会被调用。所述的EditText错误消息指出

无法验证:未能连接到localhost/127.0.0.1:50162

下面是初始化改造实例NetworkServiceHelper.init()函数:

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(); 
} 

回答

0

确保您懒洋洋地调用活动类似下面的方式

@Rule 
    public ActivityTestRule<EmergencyMainActivity> mActivityTestRule = 
      new ActivityTestRule<>(EmergencyMainActivity.class, true, false); 

,然后在建立服务器网络调用之后调用该活动。

相关问题