我正在使用适用于 Android 的 Google Espresso 编写 UI 测试,但我一直坚持如何断言 TextView 文本,该文本是从 Web 服务异步加载的。我目前的代码是:
public class MyTest extends BaseTestCase<MyActivity>{
public void setUp() throws Exception {
// (1) Tell the activity to load 'element-to-be-loaded' from webservice
this.setActivityIntent(new Intent(Intent.ACTION_VIEW, Uri.parse("data://data/element-to-be-loaded")));
getActivity();
super.setUp();
}
public void testClickOnReviews(){
// (2) Check the element is loaded and its name is displayed
Espresso
.onView(ViewMatchers.withId(R.id.element_name))
.check(ViewAssertions.matches(ViewMatchers.withText("My Name")));
// (3) Click on the details box
Espresso
.onView(ViewMatchers.withId(R.id.details_box))
.check(ViewAssertions.matches(ViewMatchers.isDisplayed()))
.perform(ViewActions.click());
// (4) Wait for the details screen to open
Espresso
.onView(ViewMatchers.withId(R.id.review_box));
// Go back to element screen
Espresso.pressBack();
}
}
在 (1) 上,我通知我的活动从 web 服务加载元素。在 (2) 上,我正在等待断言其内容的视图。这是测试失败的部分,因为它在 web 服务响应应用程序之前执行。
如何让 Espresso 等待特定数据出现在屏幕上?还是我应该以不同的方式思考来编写这样的测试?