Mockito Verify Cookbook

Mockito Verify Kochbuch

1. Überblick

Dieses Kochbuch zeigthow to use Mockito verify in einer Vielzahl von Anwendungsfällen.

Dieformat of the cookbook is example focused und praktisch - keine überflüssigen Details und Erklärungen erforderlich.

Wir werdenmocking a simple listimplementieren:

public class MyList extends AbstractList {

    @Override
    public String get(final int index) {
        return null;
    }
    @Override
    public int size() {
        return 0;
    }
}

Weitere Lektüre:

Verspottende Ausnahme Werfen mit Mockito

Erfahren Sie, wie Sie einen Methodenaufruf zum Auslösen einer Ausnahme in Mockito konfigurieren.

Read more

Java 8-Funktionen von Mockito

Überblick über die Java 8-Unterstützung in Mockito Framework, einschließlich Streams und Standardschnittstellenmethoden

Read more

Verspotten von privaten Methoden mit PowerMock

Erfahren Sie, wie PowerMock verwendet werden kann, um die Fähigkeit von Mockito zum Verspotten und Überprüfen privater Methoden in der getesteten Klasse zu erweitern.

Read more

2. Das Kochbuch

Überprüfen Sie den einfachen Aufruf auf Mock

List mockedList = mock(MyList.class);
mockedList.size();
verify(mockedList).size();

Überprüfen Sie die Anzahl der Interaktionen mit Mock

List mockedList = mock(MyList.class);
mockedList.size();
verify(mockedList, times(1)).size();

Stellen Sie sicher, dass keine Interaktion mit dem gesamten Mock stattgefunden hat

List mockedList = mock(MyList.class);
verifyZeroInteractions(mockedList);

Stellen Sie sicher, dass keine Interaktion mit einer bestimmten Methode aufgetreten ist

List mockedList = mock(MyList.class);
verify(mockedList, times(0)).size();

Stellen Sie sicher, dass keine unerwarteten Interaktionen vorliegen. Dies sollte fehlschlagen:

List mockedList = mock(MyList.class);
mockedList.size();
mockedList.clear();
verify(mockedList).size();
verifyNoMoreInteractions(mockedList);

Überprüfen Sie die Reihenfolge der Interaktionen

List mockedList = mock(MyList.class);
mockedList.size();
mockedList.add("a parameter");
mockedList.clear();

InOrder inOrder = Mockito.inOrder(mockedList);
inOrder.verify(mockedList).size();
inOrder.verify(mockedList).add("a parameter");
inOrder.verify(mockedList).clear();

Stellen Sie sicher, dass keine Interaktion stattgefunden hat

List mockedList = mock(MyList.class);
mockedList.size();
verify(mockedList, never()).clear();

Stellen Sie sicher, dass mindestens eine bestimmte Anzahl von Interaktionen stattgefunden hat

List mockedList = mock(MyList.class);
mockedList.clear();
mockedList.clear();
mockedList.clear();

verify(mockedList, atLeast(1)).clear();
verify(mockedList, atMost(10)).clear();

Überprüfen Sie die Interaktion mit dem genauen Argument

List mockedList = mock(MyList.class);
mockedList.add("test");
verify(mockedList).add("test");

Überprüfen Sie die Interaktion mit flexiblen / beliebigen Argumenten

List mockedList = mock(MyList.class);
mockedList.add("test");
verify(mockedList).add(anyString());

Überprüfen Sie die Interaktion mithilfe der Argumenterfassung

List mockedList = mock(MyList.class);
mockedList.addAll(Lists. newArrayList("someElement"));
ArgumentCaptor argumentCaptor = ArgumentCaptor.forClass(List.class);
verify(mockedList).addAll(argumentCaptor.capture());
List capturedArgument = argumentCaptor.> getValue();
assertThat(capturedArgument, hasItem("someElement"));

3. Fazit

Dieses Format ist ein Experiment - ich veröffentliche einige meiner internen Entwicklungskochbücher zu einem bestimmten Thema - zuGoogle Guava,Hamcrest undnow Mockito. Das Ziel ist es, diese Informationen online verfügbar zu machen - und sie zu ergänzen, wenn ich auf ein neues nützliches Beispiel stoße.

Die Implementierung all dieser Beispiele und Codefragmentecan be found on GitHub - dies ist ein Maven-basiertes Projekt, daher sollte es einfach zu importieren und auszuführen sein, wie es ist.