1. 序章

この短いチュートリアルでは、Mockito2での遅延検証について説明します。

Mockitoを使用すると、失敗する代わりに、テストの最後に収集および報告されたすべての結果を確認できます。

2. Mavenの依存関係

Mockito2依存関係を追加することから始めましょう。

<dependency>
    <groupId>org.mockito</groupId>
    <artifactId>mockito-core</artifactId>
    <version>2.21.0</version>
</dependency>

3. 怠惰な検証

Mockitoのデフォルトの動作は、最初の障害で停止することですすなわち 熱心に–このアプローチはfail-fastとしても知られています。

以前の失敗に関係なく、すべての検証を実行して報告する必要がある場合があります。

VerificationCollector は、テストメソッドのすべての検証を収集するJUnitルールです。

失敗した場合は、テストの最後に実行され、報告されます。

public class LazyVerificationTest {
 
    @Rule
    public VerificationCollector verificationCollector = MockitoJUnit.collector();

    // ...
}

簡単なテストを追加しましょう:

@Test
public void testLazyVerification() throws Exception {
    List mockList = mock(ArrayList.class);
    
    verify(mockList).add("one");
    verify(mockList).clear();
}

このテストが実行されると、両方の検証の失敗が報告されます

org.mockito.exceptions.base.MockitoAssertionError: There were multiple verification failures:
1. Wanted but not invoked:
arrayList.add("one");
-> at com.baeldung.mockito.java8.LazyVerificationTest.testLazyVerification(LazyVerificationTest.java:21)
Actually, there were zero interactions with this mock.

2. Wanted but not invoked:
arrayList.clear();
-> at com.baeldung.mockito.java8.LazyVerificationTest.testLazyVerification(LazyVerificationTest.java:22)
Actually, there were zero interactions with this mock.

VerificationCollector ルールがない場合、最初の検証のみが報告されます。

Wanted but not invoked:
arrayList.add("one");
-> at com.baeldung.mockito.java8.LazyVerificationTest.testLazyVerification(LazyVerificationTest.java:19)
Actually, there were zero interactions with this mock.

4. 結論

Mockito2でレイジー検証を使用する方法を簡単に確認しました。

また、いつものように、コードサンプルはGitHubにあります。