Mockito.inOrderを使用して、モックメソッドが正確な順序で呼び出されたことを確認します。

マニカンタ:

私は、モックされたオブジェクトのメソッドを期待した順序で呼び出されるかどうかをテストしようとしています。以下は簡単な例です:

@Test
public void test() {
    List<String> mockedList = Mockito.mock(List.class);

    for (int i = 0; i < 5; i++) {
        mockedList.add("a");
        mockedList.add("b");
        mockedList.add("c");
    }

    // I want only this to pass.
    InOrder inOrder1 = Mockito.inOrder(mockedList);
    inOrder1.verify(mockedList).add("a");
    inOrder1.verify(mockedList).add("b");
    inOrder1.verify(mockedList).add("c");

    // I want this to fail.
    InOrder inOrder2 = Mockito.inOrder(mockedList);
    inOrder2.verify(mockedList).add("c");
    inOrder2.verify(mockedList).add("b");
    inOrder2.verify(mockedList).add("a");
}

検証順序(c -> b -> a)は呼び出し順序(a -> b -> c)とは異なりますが、このテストはパスします。これは、Mockito がmethod2がmethod1の後のどこかを呼び出したかどうかを検証しますが、すぐには検証しないためです(つまり、その間に他のメソッドが呼び出されていないため)。要素を複数回追加しているので、これは非常に可能です。つまり、Mockito InOrderはb -> a -> c -> a -> c -> b -> c -> b -> a ...

しかし、私はこれが失敗したいので、順序が常にあることを確認してください a -> b -> c -> a -> b -> c -> a -> b -> c ...

更新:検証する適切な方法は、同じ繰り返し数の順序を検証することです(受け入れられた回答の要約)

for (int i = 0; i < 5; i++) {
    inOrder1.verify(mockedList).add("a");
    inOrder1.verify(mockedList).add("b");
    inOrder1.verify(mockedList).add("c");
}

// fail the test if we missed to verify any other invocations
inOrder1.verifyNoMoreInteractions();
thopaw:

追加する必要があることです

inOrder.verifyNoMoreInteractions();

ループを使用すると、次のような呼び出しを生成します

  • 追加(a)
  • 追加(b)
  • 追加(c)
  • 追加(a)
  • 追加(b)
  • 追加(c)

次にチェックするとき

inOrder.verify(mockedList).add("b");
inOrder.verify(mockedList).add("c");
inOrder.verify(mockedList).add("a");

呼び出し(add(b)、add(c)、add(a))に一致します。他の呼び出しはチェックされません。

  • 追加(a)
  • 追加(b)
  • 追加(c)
  • 追加(a)
  • 追加(b)
  • 追加(c)

だから私はあなたがオプションを持っている必要があると思います:1)すべての呼び出しを確認しますa、b、c、a、b、c 2)モックにこれ以上の相互作用が起こらないことを確認します

ところで、検証を次のように変更した場合

inOrder.verify(mockedList).add("c");
inOrder.verify(mockedList).add("b");
inOrder.verify(mockedList).add("a");

呼び出しと一致しないため、失敗します:-)

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Mockito.inOrderを使用して、モックメソッドが正確な順序で呼び出されたことを確認します。

分類Dev

Mockitoは、正規表現を使用して、メソッドが正しい引数で呼び出されていることを確認します

分類Dev

ONLY期待メソッドが呼び出されたことを確認しMockito

分類Dev

Mockitoを使用して特定のメソッドが呼び出されなかったことを確認するにはどうすればよいですか?

分類Dev

Mockitoを使用して、メソッドの後に何も呼び出されないことを確認する

分類Dev

Mockitoを使用して、メソッドが特定の引数で呼び出されたことを確認するにはどうすればよいですか?

分類Dev

Mockito:キャプチャされたオブジェクトのメソッドが呼び出されていることを確認します

分類Dev

Mockito:メソッドが特定のパラメータータイプで呼び出されなかったことを確認します

分類Dev

static mockitoメソッドがpower mockitoで呼び出されたことを確認する方法

分類Dev

mockitoは私のメソッドが呼び出されたことを確認しません

分類Dev

Mockito-オブジェクトのメソッド内の静的メソッドが呼び出されていることを確認します

分類Dev

Mockito-オブジェクトのメソッド内の静的メソッドが呼び出されていることを確認します

分類Dev

Mockito:メソッドが機能パラメーターで呼び出されたことを確認する

分類Dev

Mockito:メソッド内で作成されたオブジェクトでメソッドが呼び出されたことを確認する方法は?

分類Dev

Mockito-モックが呼び出されなかったことを確認する方法

分類Dev

Mockitoメソッドを呼び出す前に、モックに設定されている変数を確認します

分類Dev

テスト中にSUTの別のパブリックメソッドが呼び出されたことをMockitoで確認する方法

分類Dev

Mockito、関数が0回呼び出されたことを確認します

分類Dev

Mockitoでメソッドが呼び出されていないか確認してください

分類Dev

2つのメソッドのいずれかがMockitoを使用して呼び出されたことを確認するにはどうすればよいですか?

分類Dev

Mockitoは:どのようにする方法を確認するために、他のメソッドへの呼び出しを無視して、正確なパラメータで一度だけ呼ばれていましたか?

分類Dev

Mockitoメソッド呼び出しverify()を確認してください

分類Dev

Mockito2回呼び出されたメソッド呼び出しをモックします

分類Dev

Mockitoはモックされたオブジェクトの最後の呼び出しを確認します

分類Dev

Mockito-メソッドが2つの異なるパラメーターで2回呼び出されることを確認する

分類Dev

mockitoを使用して配列要素をスパイすると、メソッドが呼び出されたときに必要なのに呼び出されない

分類Dev

モックされたメソッドがequals()/ hashCode()で呼び出されると、MockitoはStackOverflowErrorを生成します

分類Dev

mockitoを使用して、ネストされたメソッド呼び出しをモック

分類Dev

Mockitoで多くの条件から1つが満たされていることを確認するにはどうすればよいですか?ORメソッドが呼び出されたかどうかを確認することはできますか?

Related 関連記事

  1. 1

    Mockito.inOrderを使用して、モックメソッドが正確な順序で呼び出されたことを確認します。

  2. 2

    Mockitoは、正規表現を使用して、メソッドが正しい引数で呼び出されていることを確認します

  3. 3

    ONLY期待メソッドが呼び出されたことを確認しMockito

  4. 4

    Mockitoを使用して特定のメソッドが呼び出されなかったことを確認するにはどうすればよいですか?

  5. 5

    Mockitoを使用して、メソッドの後に何も呼び出されないことを確認する

  6. 6

    Mockitoを使用して、メソッドが特定の引数で呼び出されたことを確認するにはどうすればよいですか?

  7. 7

    Mockito:キャプチャされたオブジェクトのメソッドが呼び出されていることを確認します

  8. 8

    Mockito:メソッドが特定のパラメータータイプで呼び出されなかったことを確認します

  9. 9

    static mockitoメソッドがpower mockitoで呼び出されたことを確認する方法

  10. 10

    mockitoは私のメソッドが呼び出されたことを確認しません

  11. 11

    Mockito-オブジェクトのメソッド内の静的メソッドが呼び出されていることを確認します

  12. 12

    Mockito-オブジェクトのメソッド内の静的メソッドが呼び出されていることを確認します

  13. 13

    Mockito:メソッドが機能パラメーターで呼び出されたことを確認する

  14. 14

    Mockito:メソッド内で作成されたオブジェクトでメソッドが呼び出されたことを確認する方法は?

  15. 15

    Mockito-モックが呼び出されなかったことを確認する方法

  16. 16

    Mockitoメソッドを呼び出す前に、モックに設定されている変数を確認します

  17. 17

    テスト中にSUTの別のパブリックメソッドが呼び出されたことをMockitoで確認する方法

  18. 18

    Mockito、関数が0回呼び出されたことを確認します

  19. 19

    Mockitoでメソッドが呼び出されていないか確認してください

  20. 20

    2つのメソッドのいずれかがMockitoを使用して呼び出されたことを確認するにはどうすればよいですか?

  21. 21

    Mockitoは:どのようにする方法を確認するために、他のメソッドへの呼び出しを無視して、正確なパラメータで一度だけ呼ばれていましたか?

  22. 22

    Mockitoメソッド呼び出しverify()を確認してください

  23. 23

    Mockito2回呼び出されたメソッド呼び出しをモックします

  24. 24

    Mockitoはモックされたオブジェクトの最後の呼び出しを確認します

  25. 25

    Mockito-メソッドが2つの異なるパラメーターで2回呼び出されることを確認する

  26. 26

    mockitoを使用して配列要素をスパイすると、メソッドが呼び出されたときに必要なのに呼び出されない

  27. 27

    モックされたメソッドがequals()/ hashCode()で呼び出されると、MockitoはStackOverflowErrorを生成します

  28. 28

    mockitoを使用して、ネストされたメソッド呼び出しをモック

  29. 29

    Mockitoで多くの条件から1つが満たされていることを確認するにはどうすればよいですか?ORメソッドが呼び出されたかどうかを確認することはできますか?

ホットタグ

アーカイブ