如何使用Espresso框架

时间:2015-04-28 03:53:04

标签: java android android-actionbar android-espresso contextual-action-bar

我正在编写一个测试用例,长时间点击我的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(),一切都会正常工作。我只是做了这个测试以验证我的怀疑,我不确定停止用户界面,因为这是向前推进的正确方法。

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

我做错了什么吗?使用Espresso点击CAB项目的正确方法是什么?

1 个答案:

答案 0 :(得分:4)

也许在Espresso尝试单击ContextualActionBar项目时,视图仍然处于动画状态。如果设置超时,则动画有时间完成,并且在执行单击时完全显示视图。

您是否尝试按照Espresso Setup guide

中的说明在测试设备中停用动画