Dieser Artikel vergleicht drei beliebte Java-Spott-Frameworks: Mockito, EasyMock und JMockit, die sich auf ihre Syntax, Merkmale, Nutzung und langfristige Eignung konzentrieren. Wir werden jede Frage wiederum beantworten. Sie unterscheiden sich jedoch signifikant in ihrem Ansatz und ihrer Syntax. Es verwendet einen "natürlichen" Stil, in dem Sie Methoden direkt auf dem Scheinobjekt unter Verwendung von Methoden wie
und
when()
Verwendet einen Rekord- und Replay-Stil. Sie definieren zunächst die erwarteten Interaktionen (Methodenaufrufe und Rückgabewerte) anhand von Methoden wie thenReturn()
und verify()
. Dann wiederholen Sie das Scheinobjekt und vergewissern Sie sich schließlich, dass alle erwarteten Wechselwirkungen mit List<String> mockList = Mockito.mock(List.class); Mockito.when(mockList.get(0)).thenReturn("Hello"); String result = mockList.get(0); // result will be "Hello" Mockito.verify(mockList).get(0); // Verifies that get(0) was called
expect()
bietet einen leistungsstarken und flexiblen Ansatz mithilfe der Manipulation von Bytecode. Es ermöglicht Verspottungsklassen, Schnittstellen und sogar endgültige Klassen und Methoden, ohne dass in vielen Fällen eine explizite Scheinkreation erforderlich ist. JMOCKIT verwendet Anmerkungen wie andReturn()
, um anzugeben, welche Objekte verspottet werden sollten. Dies kann zu einem saubereren Testcode führen, verfügt jedoch über eine steilere Lernkurve. Beispiel: verify()
List<String> mockList = EasyMock.createMock(List.class); EasyMock.expect(mockList.get(0)).andReturn("Hello"); EasyMock.replay(mockList); String result = mockList.get(0); // result will be "Hello" EasyMock.verify(mockList);
@Mocked
Für langfristige Projekte wird Mockito aufgrund seiner größeren und aktiveren Community, umfangreichen Dokumentationen und leicht verfügbaren Unterstützungsressourcen empfohlen. Eine größere Community bedeutet eine leichtere Fehlerbehebung, eine schnellere Lösung von Problemen und eine größere Fülle leicht verfügbarer Beispiele und Tutorials. Während Jmockit mächtig ist, kann seine kleinere Gemeinschaft zu Herausforderungen bei der Suche nach Lösungen für spezifische Probleme führen. Obwohl Easymock ausgereift ist, hat sich im Vergleich zu Mockito zu einem Rückgang der Beliebtheit verzeichnet, was zu einer weniger leicht verfügbaren Unterstützung führte. Die sauberere Syntax und der leichter verständliche Ansatz von Mockito tragen auch langfristig zu einer besseren Wartbarkeit bei.
Das obige ist der detaillierte Inhalt vonMocking in Unit -Tests: Mockito gegen Easymock gegen Jmockit. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!