Lazy Verification mit Mockito 2
1. Einführung
In diesem kurzen Tutorial werden wir uns mit verzögerten Überprüfungen in Mockito 2 befassen.
Anstatt schnell zu versagen, können wir mit Mockito alle Ergebnisse anzeigen, die am Ende eines Tests gesammelt und gemeldet wurden.
2. Maven-Abhängigkeiten
Beginnen wir mit dem Hinzufügen der Abhängigkeit vonMockito 2:
org.mockito
mockito-core
2.21.0
3. Lazy Verification
The default behavior of Mockito is to stop at the first failure d.h. eifrig - der Ansatz ist auch alsfail-fast bekannt.
Manchmal müssen wir möglicherweise alle Überprüfungen ausführen und protokollieren - unabhängig von früheren Fehlern.
VerificationCollector ist eine JUnit-Regel, die alle Überprüfungen in Testmethoden sammelt.
Sie werden am Ende des Tests ausgeführt und gemeldet, wenn Fehler auftreten:
public class LazyVerificationTest {
@Rule
public VerificationCollector verificationCollector = MockitoJUnit.collector();
// ...
}
Fügen wir einen einfachen Test hinzu:
@Test
public void testLazyVerification() throws Exception {
List mockList = mock(ArrayList.class);
verify(mockList).add("one");
verify(mockList).clear();
}
Wenn dieser Test ausgeführt wird,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.example.mockito.java8.LazyVerificationTest.testLazyVerification(LazyVerificationTest.java:21)
Actually, there were zero interactions with this mock.
2. Wanted but not invoked:
arrayList.clear();
-> at com.example.mockito.java8.LazyVerificationTest.testLazyVerification(LazyVerificationTest.java:22)
Actually, there were zero interactions with this mock.
Ohne die Regel vonVerificationCollectorwird nur die erste Überprüfung gemeldet:
Wanted but not invoked:
arrayList.add("one");
-> at com.example.mockito.java8.LazyVerificationTest.testLazyVerification(LazyVerificationTest.java:19)
Actually, there were zero interactions with this mock.
4. Fazit
Wir haben uns kurz angesehen, wie wir in Mockito 2 die verzögerte Überprüfung verwenden können.
Wie immer können auch Codebeispieleover on GitHub gefunden werden.