我目前正在使用Espresso库测试我的NavigationDrawer。 此测试的目的只是打开抽屉并单击每个项目。
所有这一切都很有效,除了一旦我在抽屉的中间,我执行一个perform(swipeUp())
也可以,但是在滑动之后,等待大约30秒,然后执行其余的测试
以下是我的测试代码:
public void testNavigate() {
String[] frags = new String[] {
authActivity.getString(R.string.title_fragment_vehicles),
authActivity.getString(R.string.title_fragment_smartphones),
authActivity.getString(R.string.title_fragment_tools),
authActivity.getString(R.string.title_fragment_pool),
authActivity.getString(R.string.title_fragment_users),
authActivity.getString(R.string.title_fragment_reporting),
authActivity.getString(R.string.title_fragment_taxes),
authActivity.getString(R.string.title_fragment_support),
authActivity.getString(R.string.title_fragment_settings)
};
for (String elem : frags) {
openDrawer(R.id.drawer_layout);
if (elem.equals(frags[frags.length / 2]))
onView(withId(R.id.drawer_layout)).perform(swipeUp());
onView(withText(elem)).perform(click());
}
}
这个测试通过,唯一的问题是它需要太长时间。
我甚至尝试通过更改参数来覆盖swipeUp()
方法:
private static ViewAction swipeUp() {
return new GeneralSwipeAction(Swipe.FAST, GeneralLocation.CENTER_LEFT,
GeneralLocation.TOP_LEFT, Press.FINGER);
}
仅供参考,我正在刷卡,因为我的抽屉的最后一个元素不可见,因此我无法在不滑动的情况下对其执行onClick()
。
我只刷一个元素,也许这个方法用于更多元素,这就是我尝试使用其他位置的原因。
提前谢谢。