【发布时间】:2016-04-01 06:47:36
【问题描述】:
我有一个活动。它可能需要许多片段。首先,它需要一个具有列表视图的 MyFeed 片段。 listview 的模型取自网络。我可以单击列表中的一项。当我单击其中一个项目时,出现了 EndFragment。 Endfragment也需要来自网络的模型。
所以我需要两个空闲资源。
这是我的测试场景。
- 等待列表视图的模型被采用
- 单击列表视图中的第一项。
- Endfragment 出现并使用 EndFragment 做一些事情。
因为需要等待网络请求,所以我做了MyfeedListIdlingResource。
private class MyfeedListIdlingResource implements IdlingResource {
private ResourceCallback mResourceCallback;
@Override
public String getName() {
return MyfeedListIdlingResource.class.getName();
}
@Override
public boolean isIdleNow() {
boolean ready = mActivityRule.getActivity().myfeedListReady();
return ready;
}
@Override
public void registerIdleTransitionCallback(ResourceCallback resourceCallback) {
mResourceCallback = resourceCallback;
}
}
这是我的测试代码。(我已经在 MyfeedListIdlingResource 上面注册了)
// step 1. Click first item in the listview. This brings Endfragment
onData(withValue("POST"))
.inAdapterView(withId(R.id.fm_listview))
.atPosition(0)
.perform(click());
// step 2. Click a view in EndFragment
onView(withId(R.id.btnComment)).perform(click());
在这个测试代码中,第1步顺利通过,因为我注册了MyfeedListIdlingResource。但它在第 2 步中失败并出现此错误代码。
Resource com.naver.android.pholar.StickerCommentTest$MyfeedListIdlingResource isIdleNow() 返回 true,但从未发送过指示资源已从忙转为空闲的消息。
我该如何处理这种情况? (如果我使用 Thread.sleep(),那么测试代码运行良好)
【问题讨论】:
标签: android ui-testing android-espresso