- 确保mockwebserver运行在一个单独的线程中,这样它不会阻塞UI线程。
@Rule
public final ExecutorServiceRule executorServiceRule = new ExecutorServiceRule();
private MockWebServer server;
@Before
public void setUp() throws Exception {
server = new MockWebServer();
server.start();
}
public void testMyUi() throws Exception {
server.enqueue(new MockResponse().setBody("hello, world!"));
onView(withId(R.id.my_button)).perform(click());
RecordedRequest request = server.takeRequest();
assertThat(request.getPath(), equalTo("/hello"));
}
- 如果您发现您的UI测试在MockWebServer启动后仍然失败,那么您可能需要使用idling资源来等待服务器响应。
@Test
public void testMyUi() throws Exception {
server.enqueue(new MockResponse().setBody("hello, world!"));
onView(withId(R.id.my_button)).perform(click());
// Wait until the server has received the request,
// fired the callback, and delivered the response.
IdlingResource idlingResource = OkHttp3IdlingResource.create("OkHttp", client);
IdlingRegistry.getInstance().register(idlingResource);
try {
RecordedRequest request = server.takeRequest();
assertThat(request.getPath(), equalTo("/hello"));
} finally {
IdlingRegistry.getInstance().unregister(idlingResource);
}
}