Mockitoベリファイクックブック

Mockito Verify Cookbook

1. 概要

このクックブックは、さまざまなユースケースでのhow to use Mockito verifyを示しています。

format of the cookbook is example focusedと実用的–余分な詳細や説明は必要ありません。

mocking a simple listの実装になります。

public class MyList extends AbstractList {

    @Override
    public String get(final int index) {
        return null;
    }
    @Override
    public int size() {
        return 0;
    }
}

参考文献:

Mockitoを使用したモック例外のスロー

Mockitoで例外をスローするメソッド呼び出しを構成する方法を学びます。

Mockito Java 8の機能

ストリームおよびデフォルトのインターフェースメソッドを含む、MockitoフレームワークでのJava 8サポートの概要

PowerMockを使用したプライベートメソッドのモック

PowerMockを使用してMockitoの機能を拡張し、テスト対象クラスのプライベートメソッドのモックと検証を行う方法を学びます。

2. クックブック

モックでの単純な呼び出しを確認する

List mockedList = mock(MyList.class);
mockedList.size();
verify(mockedList).size();

モックとの相互作用の数を確認する

List mockedList = mock(MyList.class);
mockedList.size();
verify(mockedList, times(1)).size();

モック全体との相互作用が発生していないことを確認します

List mockedList = mock(MyList.class);
verifyZeroInteractions(mockedList);

特定のメソッドとの相互作用が発生していないことを確認します

List mockedList = mock(MyList.class);
verify(mockedList, times(0)).size();

予期しない相互作用がないことを確認します–これは失敗するはずです:

List mockedList = mock(MyList.class);
mockedList.size();
mockedList.clear();
verify(mockedList).size();
verifyNoMoreInteractions(mockedList);

相互作用の順序を確認する

List mockedList = mock(MyList.class);
mockedList.size();
mockedList.add("a parameter");
mockedList.clear();

InOrder inOrder = Mockito.inOrder(mockedList);
inOrder.verify(mockedList).size();
inOrder.verify(mockedList).add("a parameter");
inOrder.verify(mockedList).clear();

相互作用が発生していないことを確認します

List mockedList = mock(MyList.class);
mockedList.size();
verify(mockedList, never()).clear();

インタラクションが少なくとも特定の回数発生したことを確認します

List mockedList = mock(MyList.class);
mockedList.clear();
mockedList.clear();
mockedList.clear();

verify(mockedList, atLeast(1)).clear();
verify(mockedList, atMost(10)).clear();

正確な引数との相互作用を確認する

List mockedList = mock(MyList.class);
mockedList.add("test");
verify(mockedList).add("test");

柔軟な/任意の引数との相互作用を確認する

List mockedList = mock(MyList.class);
mockedList.add("test");
verify(mockedList).add(anyString());

引数キャプチャを使用して相互作用を確認する

List mockedList = mock(MyList.class);
mockedList.addAll(Lists. newArrayList("someElement"));
ArgumentCaptor argumentCaptor = ArgumentCaptor.forClass(List.class);
verify(mockedList).addAll(argumentCaptor.capture());
List capturedArgument = argumentCaptor.> getValue();
assertThat(capturedArgument, hasItem("someElement"));

3. 結論

この形式は実験であり、特定のトピックに関する社内開発クックブックの一部をGoogle GuavaHamcrest、およびnow Mockitoで公開しています。 目標は、この情報をオンラインですぐに利用できるようにし、新しい有用な例を実行するたびに追加することです。

これらすべての例とコードスニペットcan be found on GitHubの実装–これはMavenベースのプロジェクトであるため、そのままインポートして実行するのは簡単です。