Heim  >  Artikel  >  Java  >  Wie kann Mockito das Testen abstrakter Klassen vereinfachen?

Wie kann Mockito das Testen abstrakter Klassen vereinfachen?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-30 18:48:30554Durchsuche

How Can Mockito Simplify Testing Abstract Classes?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn