如何避免 Espresso 中的异步操作问题?

How to avoid async operation problems in Espresso?

我有一个 Espresso 测试用例,我在第一行检查对话框是否显示

onView(withText(R.string.dialog_title)).check(matches(isDisplayed()));

我点击按钮关闭对话框:

onView(withText(R.string.negative_button)).perform(click());

问题是点击操作总是在检查操作之前执行,因为这两个操作都是异步执行的。当我不需要异步执行操作时,如何避免这个问题并保持测试用例中编写的执行行的顺序?

你可以尝试自定义一个IdlingResourceclass,它会等待一定的条件,直到View组件加载完成,然后才继续检查或执行操作。重写 isIdleNow 方法,该方法应该 return 只有当视图已经加载(或您需要满足的其他条件)时才为真。