我正在尝试为我的项目设置一个测试——测试当我的应用程序执行服务器请求时,进度条是否显示。
被测试的代码使用AsyncTask执行网络调用。
我创建了一个阻塞的服务器(MockWebServer),以捕获和保持网络调用。它接收请求但不提供响应,直到我调用“.
我的逻辑流程如下:
我的问题是由于被测试的代码使用AsyncTask进行服务器请求,Espresso自然会在验证调用(
我需要的是在等待AsyncTask时暂时停止Espresso空闲状态,以便在服务器阻塞应用程序逻辑流程时执行验证。
(更改被测试的代码不是一个选项)
有人可以帮忙吗?
被测试的代码使用AsyncTask执行网络调用。
我创建了一个阻塞的服务器(MockWebServer),以捕获和保持网络调用。它接收请求但不提供响应,直到我调用“.
release()
”。这使我可以在服务器响应之前进行验证。我的逻辑流程如下:
// Mock server will catch the next network request
BlockingServer blockingServer = createBlockingServer();
// onResume() activity performs network request and shows Progress Spinner
activityTestRule.launchActivity(null);
// onView() waits on UiController.loopUntilIdle() <- Fails here due to timeout.
onView(withId(progressBar)).check(matches(isDisplayed()));
// Tells the server to respond to the network request
blockingServer.release();
onView(withId(progressBar)).check(matches(not(isDisplayed())));
我的问题是由于被测试的代码使用AsyncTask进行服务器请求,Espresso自然会在验证调用(
onView()
)上阻塞,以等待AsyncTask完成后再进行验证。我需要的是在等待AsyncTask时暂时停止Espresso空闲状态,以便在服务器阻塞应用程序逻辑流程时执行验证。
(更改被测试的代码不是一个选项)
有人可以帮忙吗?