Java 如何使用Espresso framework单击上下文操作栏项
我正在编写一个测试用例,长时间单击我的ListView中的一个项目(由一个游标适配器支持),它将弹出一个上下文操作栏,并有一个允许用户删除该项目的菜单项 我使用以下代码:Java 如何使用Espresso framework单击上下文操作栏项,java,android,android-actionbar,android-espresso,contextual-action-bar,Java,Android,Android Actionbar,Android Espresso,Contextual Action Bar,我正在编写一个测试用例,长时间单击我的ListView中的一个项目(由一个游标适配器支持),它将弹出一个上下文操作栏,并有一个允许用户删除该项目的菜单项 我使用以下代码: public void testDeleteFirstAccount(){ // Long click onData(is(instanceOf(Cursor.class))).atPosition(0).perform(longClick()); // Click delete menu item
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.cashcartaker:id/action\u delete\u account'
原因:java.lang.RuntimeException:将不执行操作
因为目标视图与以下一项或多项不匹配
约束:至少90%的视图区域显示给用户
用户
我认为测试太快的原因是,如果在长时间单击后添加Thread.sleep()
,一切都会正常工作。我这样做只是为了验证我的怀疑,我不确定这样停止UI是正确的前进方式
我还尝试添加getInstrumentation().waitForIdleSync()
,但没有成功
我做错什么了吗?使用Espresso单击CAB项目的正确方法是什么?可能在Espresso尝试单击ContextualActionBar项目时视图仍处于动画状态。如果设置了超时,动画将有时间完成,并且在执行单击时视图将完全显示
您是否尝试过在测试设备中禁用动画,如?中所述?可能在Espresso尝试单击ContextualActionBar项目时视图仍处于动画状态。如果设置了超时,动画将有时间完成,并且在执行单击时视图将完全显示
您是否尝试过在测试设备中禁用动画,如?中所述?我没有尝试关闭动画,但一旦关闭,一切都顺利通过。非常感谢。我没有尝试关闭动画,但一旦我做了,一切都很顺利。非常感谢。