【发布时间】:2015-04-29 02:57:52
【问题描述】:
我正在编写一个测试用例,它长按我的 ListView 中的一个项目(由 CursorAdapter 支持),它将拉出一个上下文操作栏并有一个允许用户删除该项目的菜单项。
我使用以下代码:
public void testDeleteFirstAccount(){
// Long click
onData(is(instanceOf(Cursor.class))).atPosition(0).perform(longClick());
// Click delete menu item
onView(withId(R.id.action_delete_account)).perform(click());
// Find alert button with text
onView(withText("Yes")).perform(click());
}
但是,我无法单击该按钮,因为我认为测试运行得太快了。我收到以下错误:
android.support.test.espresso.PerformException:执行错误 '单击'视图'与ID: com.example.android.cashcaretaker:id/action_delete_account'。
原因:java.lang.RuntimeException: Action will not be executed 因为目标视图与以下一项或多项不匹配 约束:至少 90% 的视图区域显示到 用户。
我认为测试太快的原因是如果我在长按后添加Thread.sleep(),一切都会正常工作。我这样做只是为了验证我的怀疑,我不确定停止 UI 是否是前进的正确方法。
我也尝试过添加getInstrumentation().waitForIdleSync(),但没有成功。
我做错了什么吗?使用 Espresso 点击 CAB 项目的正确方法是什么?
【问题讨论】:
标签: java android android-actionbar android-espresso contextual-action-bar