1

情况如下:

我有一个 ListView,当长按某个项目时,会显示一个上下文菜单。我已经在模拟器上检查过了,但现在我想断言上下文菜单出现了。

有没有办法断言上下文菜单已使用 Robolectric 显示?

4

2 回答 2

1

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

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

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

您不需要在这种方法中进行间谍活动

于 2012-12-28T15:44:34.247 回答
0

最后,我已经完成了一个非常基本的版本,public void registerForContextMenu(View view)如下所示:

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

制作一个非常简单的 TestContextMenu 实现,扩展 TestMenu 并添加对通过覆盖 add 和 addSubMenu 方法创建的最后一个 TestContextMenu 的静态引用。

于 2012-12-29T10:02:30.380 回答