0

我正在编写一个 Robotium 测试,我长按列表中的一个项目以调出上下文菜单。我需要以某种方式检测我的 tearDown 中的上下文菜单,以便我可以退出它并退出应用程序。我该怎么做?

4

2 回答 2

0

finishOpenedActivities 应该关闭您打开的所有活动,但我假设您需要做一些特定的事情来清除您的拆卸方法中的应用程序状态。在这种情况下,您将不得不检查上下文菜单是否存在,我假设您有代码要做,因为您正在使用上下文菜单(或查看 dmons 答案)。

第二种选择当然也是值得花时间做的事情是在您的应用程序/测试基础设施中构建一个简单的方法来删除所有状态,以便您的拆卸是一致的,并且都从没有以前的状态开始,在长期运行将使您的测试更好并允许更快的开发,因为通常任何时候您都必须记住执行 x 和 y 和 z 以清除状态,您会忘记其中一个,并且追踪起来会很痛苦。

于 2012-12-04T07:27:04.163 回答
0

不确定最新的 Robotium 版本是否有更好的方法,但我们在早期版本中发现了一个功能性黑客:

  private ListView getContextMenuListView(){
    ArrayList<ListView> currentListViews = solo.getCurrentListViews();
    for (ListView lv : currentListViews){
      String listViewClassName = lv.getClass().getName();
      if (listViewClassName.startsWith("com.android.internal.app.AlertController$RecycleListView")){
        return lv;
      }
    }
    return null;
  }

请注意,与其他所有内容一样,您需要等待列表视图弹出。如果您立即尝试找到它,您可能会错过它,尤其是在模拟器中运行时。

于 2012-12-03T21:58:38.723 回答