Android 使用Robolectric断言上下文菜单

Android 使用Robolectric断言上下文菜单,android,robolectric,Android,Robolectric,情况如下: 我有一个列表视图,当长时间单击某个项目时,会显示一个上下文菜单。我已经在emulator上检查了它,但是现在我想断言上下文菜单出现了 有没有一种方法可以断言使用Robolectric显示了上下文菜单?您可以模拟元素单击并检查是否调用了onCreateContextMenu UPD 我可能不会听从我的建议。我会做什么-进行两次测试: 我将在创建活动后(或在活动中添加视图时)检查视图是否具有正确的长单击侦听器 之后,我将检查上下文菜单构造的代码在为这个特定视图调用时是否正确工作 在这种方

情况如下:

我有一个列表视图,当长时间单击某个项目时,会显示一个上下文菜单。我已经在emulator上检查了它,但是现在我想断言上下文菜单出现了


有没有一种方法可以断言使用Robolectric显示了上下文菜单?

您可以模拟元素单击并检查是否调用了
onCreateContextMenu

UPD 我可能不会听从我的建议。我会做什么-进行两次测试:

  • 我将在创建活动后(或在活动中添加视图时)检查视图是否具有正确的长单击侦听器
  • 之后,我将检查上下文菜单构造的代码在为这个特定视图调用时是否正确工作

  • 在这种方法中您不需要监视

    您可以模拟元素单击并检查是否调用了
    onCreateContextMenu

    UPD 我可能不会听从我的建议。我会做什么-进行两次测试:

  • 我将在创建活动后(或在活动中添加视图时)检查视图是否具有正确的长单击侦听器
  • 之后,我将检查上下文菜单构造的代码在为这个特定视图调用时是否正确工作

  • 您不需要在这种方法中进行监视

    最后,我实现了一个真正基本的
    public void registerForContextMenu(View)版本
    ,如下所示:

    view.setOnLongClickListener(new OnLongClickListener() {
        @Override
        public boolean onLongClick(View arg0) {
            realActivity.onCreateContextMenu(new TestContextMenu(), null,
                null);
            return true;
        }
    });
    

    对TestContextMenu进行一个非常简单的实现,扩展TestMenu,并向通过重写add和addSubMenu方法创建的最后一个TestContextMenu添加一个静态引用。

    最后,我实现了一个真正基本的
    public void registerForContextMenu(View视图)
    ,如下所示:

    view.setOnLongClickListener(new OnLongClickListener() {
        @Override
        public boolean onLongClick(View arg0) {
            realActivity.onCreateContextMenu(new TestContextMenu(), null,
                null);
            return true;
        }
    });
    

    对TestContextMenu进行一个非常简单的实现,扩展TestMenu,并向通过重写add和addSubMenu方法创建的最后一个TestContextMenu添加一个静态引用。

    如何使用标志检查onCreateContextMenu是否被称为w/o?
    Mockito.spy
    可以帮助您以及如何检查onCreateContextMenu使用标志调用w/o?
    Mockito.spy
    可以帮助您