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.