1

状況は次のとおりです。

ListView があり、アイテムをロングクリックするとコンテキスト メニューが表示されます。エミュレーターで確認しましたが、コンテキストメニューが表示されることをアサートしたいと思います。

Robolectric を使用してコンテキスト メニューが表示されていることを確認する方法はありますか?

4

2 に答える 2

1

要素のクリックをエミュレートして、onCreateContextMenu呼び出されることを確認できます

UPD 私はおそらく私の提案に従わないでしょう。私がすること-2つのテストがあります:

  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;
    }
});

TestMenuを拡張するTestContextMenuの非常に単純な実装を作成し、addメソッドとaddSubMenuメソッドをオーバーライドして作成された最後のTestContextMenuへの静的参照を追加します。

于 2012-12-29T10:02:30.380 に答える