2016-10-17 27 views
1

我有咖啡的测试情况下我检查的第一行是否显示对话框或不如何避免Espresso中的异步操作问题?

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

和他们,我执行上的按钮点击关闭对话框:

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

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

+0

我从来没有见过一种情况,其中onView操作'异步执行.'检查你的房屋,尝试做一个不同的行动或把完整的代码,但有时咖啡不是异步太快。 – satyajit

+0

@satyajit如果你看看执行检查并执行方法,你会发现这些方法排队等待以异步方式执行。 – karate

+0

https://google.github.io/android-testing-support-library/docs/espresso/idling-resource/index.html“默认情况下,Espresso会等待当前消息队列中的UI事件进行处理,并且默认AsyncTasks在它移动到下一个测试操作之前完成“。所以,测试操作不是异步执行的。我的建议是:在调试模式下用一些断点执行测试,并检查你的测试发生了什么。 – jeprubio

回答

1

您可以尝试自定义一个IdlingResource类,该类将等待某个条件,直到View组件完全加载,然后才继续检查或执行操作。重写isIdleNow方法,只有当视图已经被加载(或者你需要满足的其他条件)时才应该返回true。