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!