1. Introduction
In this short tutorial, weβll look at lazy verifications in Mockito.
Instead of failing-fast, Mockito allows us to see all results collected and reported at the end of a test.
2. Maven Dependencies
Letβs start by adding the Mockito dependency:
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>2.21.0</version>
</dependency>
3. Lazy Verification
The default behavior of Mockito is to stop at the first failure i.e. eagerly β the approach is also known as fail-fast.
Sometimes we might need to execute and report all verifications β regardless of previous failures.
VerificationCollector is a JUnit rule which collects all verifications in test methods.
Theyβre executed and reported at the end of the test if there are failures:
public class LazyVerificationTest {
@Rule
public VerificationCollector verificationCollector = MockitoJUnit.collector();
// ...
}
Letβs add a simple test:
@Test
public void testLazyVerification() throws Exception {
List mockList = mock(ArrayList.class);
verify(mockList).add("one");
verify(mockList).clear();
}
When this test is executed, failures of both verifications will be reported:
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.
Without VerificationCollector rule, only the first verification gets reported:
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. Conclusion
We had a quick look at how we can use lazy verification in Mockito.
