6

テストする方法があります。それは次のように始まります。

public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
    AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) menuInfo;
    contextString = adapter.getItem(info.position);
        /.../
    }

Mockito を使用してテストしたいのですが、menuInfo を次のように宣言すると、次のようになります。

@Mock ContextMenuInfo menuInfo

次に、次のステートメントをコンパイルできません。

Mockito.when(menuInfo.position).thenReturn(1);

ContextMenuInfoオブジェクトに対して有効ではないためです。AdapterView.AdapterContextMenuInfo実行時にエラーが発生するため、オブジェクトをクラスとして宣言できません。

Mockito では、モックが複数のインターフェイスを実装する可能性があることはわかっていますが、同じことはクラスには当てはまりません。上記の方法をテストするにはどうすればよいでしょうか?

4

3 に答える 3

4

mockitoのextraInterfacesオプションを使用することができます

        @Mock(extraInterfaces=AdapterView.AdapterContextMenuInfo.class) 
        ContextMenuInfo menuInfo

そして、それを次のようにモックします

Mockito.doReturn(1).when((AdapterView.AdapterContextMenuInfo)menuInfo).position
于 2016-04-26T08:27:30.563 に答える