Heim  >  Artikel  >  Java  >  Wie kann Mockito Ihnen beim Testen abstrakter Klassen ohne explizite Unterklassen helfen?

Wie kann Mockito Ihnen beim Testen abstrakter Klassen ohne explizite Unterklassen helfen?

Susan Sarandon
Susan SarandonOriginal
2024-10-30 08:01:27425Durchsuche

How Can Mockito Help You Test Abstract Classes Without Explicit Subclassing?

Mockito und Testen abstrakter Klassen

Das Testen abstrakter Klassen kann eine Herausforderung darstellen. Das manuelle Erstellen von Mocks durch Vererbung fühlt sich umständlich und überflüssig an. Glücklicherweise bieten Mocking-Frameworks wie Mockito alternative Ansätze.

Mockitos HILFE BEIM MOCKEN ABSTRAKTER KLASSEN

Mockito ermöglicht das nahtlose Mocking abstrakter Klassen und umgeht gleichzeitig die Notwendigkeit einer expliziten Unterklassenbildung. Durch die Verwendung von Mockito.mock(My.class, Answers.CALLS_REAL_METHODS) können Sie einen Mock erstellen, der von der abstrakten Klasse erbt. Dieser Mock fungiert sowohl als Unterklasse als auch als Teilmock.

VERMEIDUNG DER IMPLEMENTIERUNG ABSTRAKTER METHODEN

Mit der Answers.CALLS_REAL_METHODS-Konfiguration können Sie abstrakte Methoden verspotten, ohne sie zu implementieren. Die tatsächlichen Methoden werden unverändert ausgeführt, sofern sie nicht explizit in Ihrem Test ausgeblendet werden.

BEISPIELIMPLEMENTIERUNG

Betrachten Sie die folgende abstrakte Klasse und einen Testfall:

<code class="java">public abstract class My {
  public Result methodUnderTest() { ... }
  protected abstract void methodIDontCareAbout();
}
 
public class MyTest {
    @Test
    public void shouldFailOnNullIdentifiers() {
        My my = Mockito.mock(My.class, Answers.CALLS_REAL_METHODS);
        Assert.assertSomething(my.methodUnderTest());
    }
}</code>

In diesem Beispiel wird der Mock mit Mockito.mock() erstellt und Answers.CALLS_REAL_METHODS stellt sicher, dass die Methode methodUnderTest() wie in der abstrakten Klasse definiert ausgeführt wird, auch wenn methodIDontCareAbout() nicht implementiert ist . Dieser Ansatz vereinfacht den Testprozess und macht die manuelle Erstellung von Unterklassen überflüssig.

Das obige ist der detaillierte Inhalt vonWie kann Mockito Ihnen beim Testen abstrakter Klassen ohne explizite Unterklassen helfen?. 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