Heim >Java >javaLernprogramm >So testen Sie abstrakte Klassen mit Mockito: Eine Schritt-für-Schritt-Anleitung
Abstrakte Klassen mit Mockito testen
Abstrakte Klassen stellen eine Herausforderung für Unit-Tests dar, da es an konkreten Implementierungen mangelt. Obwohl die manuelle Mock-Erstellung eine Option ist, kann sie zeitaufwändig und komplex sein.
Mockito bietet eine elegante Lösung zum Testen abstrakter Klassen ohne manuelle Mock-Erstellung. So funktioniert es:
Mock the Abstract Class:
<code class="java">My mock = Mockito.mock(My.class, Answers.CALLS_REAL_METHODS);</code>
Durch die Verwendung von Answers.CALLS_REAL_METHODS weisen Sie Mockito an, die eigentliche Klasse auszuführen Implementierung nicht überschriebener Methoden, sodass Sie das Verhalten der abstrakten Methoden testen können.
Stub-abstrakte Methoden nach Bedarf:
Für Zusammenfassung Methoden, die Sie während des Tests steuern möchten, verwenden Sie die folgende Syntax:
<code class="java">Mockito.when(mock.methodIDontCareAbout()).thenReturn(null);</code>
Dadurch wird die spezifische abstrakte Methode blockiert und das gewünschte Verhalten bereitgestellt.
Beispiel:
Stellen Sie sich das folgende Szenario vor:
<code class="java">public abstract class My { public Result methodUnderTest() { ... } protected abstract void methodIDontCareAbout(); } @Test public void shouldFailOnNullIdentifiers() { My my = Mockito.mock(My.class, Answers.CALLS_REAL_METHODS); Assert.assertSomething(my.methodUnderTest()); }</code>
In diesem Beispiel wird die abstrakte Methode methodIDontCareAbout() in der zu testenden Methode nicht verwendet. Indem Sie es mit thenReturn(null) verspotten, ignorieren Sie es effektiv während des Testens.
Dieser Ansatz bietet eine prägnante und bequeme Möglichkeit, abstrakte Klassen zu testen, wodurch die Notwendigkeit handgefertigter Mocks entfällt und ein effizientes Testen von Nicht-Klassen erleichtert wird. konkrete Klassen.
Das obige ist der detaillierte Inhalt vonSo testen Sie abstrakte Klassen mit Mockito: Eine Schritt-für-Schritt-Anleitung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!