Mockitoでは、 `times(n)` and `atleast(n)`は「検証」メソッド内で使用され、モックオブジェクトでメソッドが何回呼び出されるかを確認します。それぞれの詳細な説明は次のとおりです。
Times(n)
- 目的:このメソッドは、メソッドが正確に「n」と呼ばれることを確認します。メソッドが「n」よりも多かれ少なかれ呼び出された場合、テストは失敗します。- 例: `検証(mock、times(2))。somemethod();` `somemethod()`が正確に2回呼ばれることを確認します。
- ユースケース:正確な数の呼び出しを確認する必要がある場合に使用します。
atleast(n)
- 目的:このメソッドは、メソッドが少なくとも `n`と呼ばれることを確認します。メソッドが「n」時間未満と呼ばれる場合、テストは失敗しますが、「n」以上呼ばれると通過します。- 例: `検証(mock、atleast(2))。somemethod();` somemethod() `が少なくとも2回呼ばれることを保証します。
- ユースケース:最小数の呼び出しを確認するが、最大値を気にしない場合は使用します。
###キーの違い
- 正確な最小値: `刻んだ(n)`には正確な数の呼び出しが必要で、 `atleast(n)`には少なくともその数の呼び出しが必要です。
- 柔軟性: `atleast(n)`は指定よりも多くの呼び出しを許可するため、柔軟性が高くなりますが、 `times(n)`は呼び出し数について厳格です。
- エラー処理:メソッドが「時間(n)」で指定されたよりも多く呼び出された場合、Mockitoは例外をスローします( `ToomanyActualInvocations`)。 「Atleast(n)」では、メソッドが指定されたよりも少ない回数( `toolittleactualinvocations」と呼ばれる場合にのみ失敗します。
要約すると、 `times(n)`はメソッド呼び出しの数を正確に制御するために使用されますが、「n) `は、呼び出しの最大数を制限することなく、コールの最小しきい値を確保するために使用されます。
引用:[1] https://stackoverflow.com/questions/58176580/what-is-the-difference-between-atleastonce-and-times1-in-mockito
[2] https://mincong.io/2019/09/22/mockito-verify/
[3] https://github.com/mockk/mockk
[4] https://site.mockito.org/javadoc/current/org/mockito/mockito.html
[5] https://www.lambdatest.com/automation-testing-advisor/selenium/methods/org.mockito.mockito.atleast
[6] https://stackoverflow.com/questions/60969650/use-of-verify-method-and with without-times1-parameter
[7] https://www.digitalocean.com/community/tutorials/mockito-verify
[8] https://stackoverflow.com/questions/27787487/java-verify-void-method-calls-n-times-with-mockito
[9] https://www.javacodegeeks.com/2015/11/mockito-verification.html
[10] https://stackoverflow.com/questions/54233024/how-to-verify-a-method-which-called-multiple-times/54233921