如何使用espresso框架单击上下文操作栏项

whitzsjs  于 2021-07-09  发布在  Java
关注(0)|答案(1)|浏览(402)

我正在编写一个测试用例,在我的listview中长时间单击一个项目(由一个游标适配器支持),它将弹出一个上下文操作栏,并有一个允许用户删除该项目的菜单项。
我使用以下代码:

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.cash的视图上执行“单击”时出错caretaker:id/action_delete_account'.
原因:java.lang.runtimeexception:将不执行操作,因为目标视图与以下一个或多个约束不匹配:至少90%的视图区域显示给用户。
我之所以认为测试太快是因为如果我加上 Thread.sleep() 长时间单击后,一切都会正常工作。我这样做只是为了验证我的怀疑,我不确定这样停止ui是正确的前进方式。
我也尝试过添加 getInstrumentation().waitForIdleSync() 但没有成功。
我做错什么了吗?使用浓缩咖啡点击出租车项目的正确方法是什么?

iih3973s

iih3973s1#

也许在espresso尝试单击contextualactionbar项时,视图仍处于动画状态。如果设置了超时,则动画有时间完成,并且在执行单击时视图将完全显示。
您是否尝试过按照《浓缩咖啡设置指南》中的说明禁用测试设备中的动画?

相关问题