Mockito Wann / Dann Kochbuch

1. Übersicht

Dieses Kochbuch zeigt anhand verschiedener Beispiele und Anwendungsfälle , wie Mockito zum Konfigurieren des Verhaltens verwendet wird.

Das Format des Kochbuchs ist beispielhaft und praktisch - es sind keine überflüssigen Details und Erklärungen erforderlich.

Wenn Sie mehr über das Testen mit Mockito erfahren möchten, lesen Sie natürlich die anderen Mockito-Artikel hier.

Wir werden uns über eine einfache Listenimplementierung lustig machen - dieselbe Implementierung, die wir im vorherigen Kochbuch verwendet haben:

public class MyList extends AbstractList { @Override public String get(final int index) { return null; } @Override public int size() { return 1; } } 

2. Kochbuch

Konfigurieren Sie das einfache Rückgabeverhalten für Mock

MyList listMock = Mockito.mock(MyList.class); when(listMock.add(anyString())).thenReturn(false); boolean added = listMock.add(randomAlphabetic(6)); assertThat(added, is(false));

Konfigurieren Sie das Rückgabeverhalten für Mock auf alternative Weise

MyList listMock = Mockito.mock(MyList.class); doReturn(false).when(listMock).add(anyString()); boolean added = listMock.add(randomAlphabetic(6)); assertThat(added, is(false));

Konfigurieren Sie mock, um eine Ausnahme bei einem Methodenaufruf auszulösen

@Test(expected = IllegalStateException.class) public void givenMethodIsConfiguredToThrowException_whenCallingMethod_thenExceptionIsThrown() { MyList listMock = Mockito.mock(MyList.class); when(listMock.add(anyString())).thenThrow(IllegalStateException.class); listMock.add(randomAlphabetic(6)); }

Konfigurieren Sie das Verhalten einer Methode mit dem Rückgabetyp void, um eine Ausnahme auszulösen

MyList listMock = Mockito.mock(MyList.class); doThrow(NullPointerException.class).when(listMock).clear(); listMock.clear();

Konfigurieren Sie das Verhalten mehrerer Anrufe

MyList listMock = Mockito.mock(MyList.class); when(listMock.add(anyString())) .thenReturn(false) .thenThrow(IllegalStateException.class); listMock.add(randomAlphabetic(6)); listMock.add(randomAlphabetic(6)); // will throw the exception

Konfigurieren Sie das Verhalten eines Spions

MyList instance = new MyList(); MyList spy = Mockito.spy(instance); doThrow(NullPointerException.class).when(spy).size(); spy.size(); // will throw the exception

Konfigurieren Sie die Methode, um die reale, zugrunde liegende Methode für ein Modell aufzurufen

MyList listMock = Mockito.mock(MyList.class); when(listMock.size()).thenCallRealMethod(); assertThat(listMock.size(), equalTo(1));

Konfigurieren Sie den Mock-Methodenaufruf mit einer benutzerdefinierten Antwort

MyList listMock = Mockito.mock(MyList.class); doAnswer(invocation -> "Always the same").when(listMock).get(anyInt()); String element = listMock.get(1); assertThat(element, is(equalTo("Always the same")));

3. Fazit

Dieses Format ist ein Experiment - ich veröffentliche einige meiner internen Entwicklungskochbücher zu einem bestimmten Thema - auf Google Guava, Hamcrest und jetzt Mockito . 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 Codefragmente finden Sie auf GitHub - dies ist ein Maven-basiertes Projekt, daher sollte es einfach zu importieren und auszuführen sein, wie es ist.