Adnroid Studio 3.3。
在我的应用中,我使用Retrofit来执行http请求。 我也使用MockWebServer返回存根响应。
在活动中,当我单击按钮时,我启动 async http请求(通过Retrofit),然后等待回调方法以返回响应。这是Espresso的测试:
@RunWith(AndroidJUnit4::class)
class AddTraderActivityTest {
@get:Rule
var addTraderIntentTestRule: IntentsTestRule<AddTraderActivity> = IntentsTestRule(AddTraderActivity::class.java)
@Before
fun setup() {
mockServer = MockWebServer()
mockServer.start(8081)
Debug.d(TAG, "SUCCCESS_START_MOCKWEBSRVER")
}
@Test
fun buttonStart_click_longResponse() {
// stub response
mockServer.enqueue(MockResponse()
.setResponseCode(200)
.setBody(FileUtil.getStringFromFile(context, "add_trader_success_200.json"))
.setBodyDelay(5000, TimeUnit.MILLISECONDS))
onView(withId(R.id.baseTextInputEditText))
.perform(typeText(BASE_TEST))
onView(withId(R.id.quoteTextInputEditText))
.perform(typeText(QUOTE_TEST))
onView(withId(R.id.startButton))
.perform(click())
onView(withText(R.id.containerProgressBarLayout))
.check(matches(isDisplayed()))
}
但是问题是,当执行perform(click()
时才调用方法check
,直到未获得存根响应(5秒后)。
但是在check
方法之后,我需要立即调用方法perform(click()
。因为我需要check
是containerProgressBarLayout
是isDisplayed()
而不返回存根响应。我需要在加载数据
我该怎么做?
答案 0 :(得分:0)
您可以使用Espresso idling resources。
空闲资源表示异步操作,其结果 影响UI测试中的后续操作。通过注册空闲 使用Espresso获得资源,您可以验证这些异步 在测试您的应用程序时,操作更加可靠。
还有一个Okhttp库,您可以检出here