Faule Verifizierung mit Mockito 2

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.