繁体   English   中英

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

[英]How to click contextual action bar item using Espresso framework

我正在编写一个测试用例,该用例长按我的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:由于目标视图与以下一个或多个约束不匹配,因此不会执行操作:向用户显示视图区域的至少90%。

我认为测试速度过快的原因是,如果在长按之后添加Thread.sleep() ,一切都会正常进行。 我只是以此做为检验来验证我的怀疑的,我不确定停止UI是那样前进的正确方法。

我也尝试添加getInstrumentation().waitForIdleSync()但没有成功。

我在做别的事情吗? 使用Espresso单击CAB项目的正确方法是什么?

在Espresso尝试单击ContextualActionBar项时,视图仍可能处于动画状态。 并且,如果您设置了超时,动画将有时间完成,并且在单击时将完全显示视图。

您是否已尝试按照Espresso设置指南中所述在测试设备中禁用动画?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM