Verspotten abstrakter Klassen mit Mockito
Das Testen abstrakter Klassen kann eine Herausforderung darstellen, insbesondere wenn die manuelle Erstellung von Mock-Klassen in Betracht gezogen wird. Die Nutzung von Mockito bietet jedoch einen alternativen Ansatz.
Mockito.mock() mit Answers.CALLS_REAL_METHODS
Anstatt manuell eine Mock-Klasse zu erstellen, kann Mockitos Methode Mock() dies tun kann mit dem Argument Answers.CALLS_REAL_METHODS verwendet werden. Diese Option generiert eine Scheinklasse, die von der abstrakten Klasse erbt und das Testen realer Methoden ermöglicht, ohne diese explizit zu implementieren.
Beispiel:
Betrachten Sie eine abstrakte Klasse My with eine zu testende Methode methodUnderTest() und eine abstrakte Methode methodIDontCareAbout(). Der folgende Codeausschnitt zeigt, wie methodUnderTest() mit diesem Ansatz getestet wird:
<code class="java">@Test public void shouldFailOnNullIdentifiers() { My my = Mockito.mock(My.class, Answers.CALLS_REAL_METHODS); Assert.assertSomething(my.methodUnderTest()); }</code>
In diesem Beispiel erstellt Mockito.mock(My.class, Answers.CALLS_REAL_METHODS) eine Scheininstanz von My, die das Reale zulässt Implementierung von methodUnderTest() zum Ausführen, was das Testen seiner Logik ermöglicht. Gleichzeitig muss die abstrakte Methode methodIDontCareAbout() nicht implementiert werden, da sie nicht vom Test aufgerufen wird.
Vorteile
Dieser Ansatz optimiert das Testen von abstrakten Klassen, da keine benutzerdefinierten Unterklassen mehr erstellt oder abstrakte Methoden implementiert werden müssen. Außerdem wird die gewünschte Trennung zwischen der abstrakten Klasse und dem Testfall beibehalten, was sauberere und präzisere Tests ermöglicht.
Das obige ist der detaillierte Inhalt vonWie kann Mockito das Testen abstrakter Klassen vereinfachen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!