1. Introduction
In this short tutorial, we’ll look at lazy verifications in Mockito 2.
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 2 dependency:
<dependency> <groupId>org.mockito</groupId> <artifactId>mockito-core</artifactId> <version>2.12.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 2.
Also, as always, code samples can be found over on GitHub.