安卓工作室 3.3。
在我的应用程序中,我使用 Retrofit 来执行 http 请求。我也使用 MockWebServer 返回存根响应。
在我单击按钮时的活动中,我启动异步http 请求(通过改造)并等待回调方法返回响应。这里 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()
我怎么能做到这一点?