2017-09-22 3 views
0

Ich habe lange an EasyMocking in JUnits gearbeitet. Ich fühle mich ziemlich wohl dabei, aber jetzt möchte ich wissen, wie sich EasyMocks von Jmockits unterscheiden. Ich habe versucht, ihre Dokumentation durchzugehen, und ich fand heraus, dass die Syntax ein wenig anders ist. Aber ich konnte nicht herausfinden, ob es irgendwelche Unterschiede in ihren Leistungen gibt. Kann mir jemand helfen, herauszufinden, welche Punkte die beiden besser machen als die anderen? Gibt es ein spezielles Element in JMockit, das nicht in dem anderen gefunden wird? Vielen Dank im Voraus ...Wie unterscheidet sich Jmockit von EasyMock? Was ist besser zu benutzen?

Antwort

0

Sie können eine Blog-Post über die Unterschiede zwischen ihnen finden (und Mockito auch!) Hier: http://www.baeldung.com/mockito-vs-easymock-vs-jmockit

Während sie alle haben unterschiedliche Syntax und verschiedene Arbeitsweisen, sollen Sie sein in der Lage zu erreichen, was auch immer Sie in Bezug auf Spott mit beiden Rahmen benötigen.

+0

Durch die Dokumente werden mehrere Vorteile gegenüber easyMocks gefunden. Es ist wahr und offensichtlich, dass jmockit eine Struktur beim Schreiben von Testfällen eingeführt hat und die teilweise Verspottung ist hier logischer. Ein ähnlicher Argumentvergleich erklärt jmockit auch zu einem Gewinner. Aber das alles sagt nicht, dass jemand anfangen muss, jmockit statt easymocks zu benutzen. Gibt es einen großen Unterschied in der Verwendung der beiden Frameworks? Wie gibt es irgendeine Funktionalität, die easymock nicht kann, aber die andere kann? – akshit

1

Es gibt viele Unterschiede zwischen JMockit und EasyMock/jMock/Mockito/PowerMock. Dies sind die wichtigsten:

  1. Unterstützung für Integrationstests: JMockit ein unterstützt out-of-container integration testing approach, ähnlich dem, was die Spring Test module bietet, sondern auch Java EE unterstützt. Die anderen Mocking-Bibliotheken unterstützen nur isolierte Unit-Tests mit Mock-Objekten.
  2. A "faking" API (siehe auch in xUnit Patterns), zusätzlich zu der mocking API. Jede der anderen Spottbibliotheken hat nur eine spöttische API.
  3. Volle Unterstützung für "Spott", zusätzlich zu "Mock Objekte". Andere Mocking-Bibliotheken arbeiten mit Mock-Objekten, die sie erstellen und die irgendwie an den zu testenden Code übergeben werden müssen. Mit EasyMock/jMock/Mockito, static Methoden, Konstruktoren und "new -ed" Objekte können überhaupt nicht verspottet werden. PowerMock unterstützt auch Full-Mocking, fokussiert aber immer noch auf Mock-Objekte (speziell müssen neu erstellte Objekte durch Mock-Objekte durch whenNew Aufnahme ersetzt werden, während bei JMockit ein Test einfach ein @Mocked Feld deklarieren kann).
  4. Unterstützung für Mocking/Fake von final Klassen und Methoden. Nur PowerMock bietet diese Unterstützung. Mockito hat kürzlich einen "Inline-Mock-Maker" hinzugefügt, der Unterstützung für finals hinzufügt, aber es ist standardmäßig nicht aktiv und möglicherweise nicht so zuverlässig.
  5. Unterstützung für das Mocking/Faken von unspezifischen Unterklassen und Interface-Implementierungen (wobei der Test nur einen Basistyp deklariert, der verspottet/gefälscht werden soll).
  6. Im spöttischen API, Erwartungen zu den Methoden mit mehreren Parametern können mit dem Argument Matcher (wie anyString, etc.) nur bei einigen Parameter, während andere spöttische APIs erfordern solche Matcher für jeden einzelnen Parameter aufgezeichnet/überprüft werden, .
  7. Auch in der Mocking-API können die Erwartungen explizit verifiziert werden nachdem der getestete Code ausgeübt wurde, genau wie in Mockito. EasyMock/jMock unterstützt dieses Verifikationsmodell nicht.

Was die Leistung, einen Typ mit JMockit (done durch Klasse Neudefinition) wahrscheinlich Overhead hat eine höhere Laufzeit spöttisch im Vergleich ein Mockobjekt mit EasyMock/JMock/Mockito (done durch Subklasse Definition) zur Schaffung und niedriger im Vergleich zu PowerMock (erfolgt durch Klassendefinition auf einem benutzerdefinierten Classloader). Sie sollten jedoch den Unterschied in der Leistung nur dann bemerken, wenn viel gespottet wird, was höchstwahrscheinlich auf einen übermäßigen Gebrauch von Spott hindeutet.

Verwandte Themen