0

安卓工作室 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同时不返回存根响应。我需要在加载数据期间检查我的视图containerProgressBarLayoutisDisplayed()

我怎么能做到这一点?

4

1 回答 1

0

您可以使用Espresso 空闲资源

空闲资源表示异步操作,其结果会影响 UI 测试中的后续操作。通过向 Espresso 注册空闲资源,您可以在测试应用程序时更可靠地验证这些异步操作。

此外,还有一个 Okhttp 库,你可以在这里查看

于 2019-05-05T21:31:42.190 回答