Ich untersuche, welches Spott-Framework für mein Projekt verwendet werden soll, und habe es auf JMockit und Mockito eingegrenzt .
Ich stelle fest, dass Mockito auf Stackoverflow zum " besten Mock-Framework für Java " gewählt wurde.
Beim Vergleichen von Funktionen in JMockits " Mocking Tool Comparision Matrix " scheint es, dass JMockit mehrere verschiedene Funktionen hat.
Hat jemand spezifische Informationen (keine Meinungen) darüber, was Mockito tun kann, was mit JMockit nicht erreicht werden kann und umgekehrt?
Antworten:
Update Sep 2019: Das einzige von Spring Boot (standardmäßig) unterstützte Mockito- Framework ist Mockito . Wenn Sie Spring verwenden, liegt die Antwort auf der Hand.
Ich würde sagen, die Konkurrenz besteht zwischen JMockit und PowerMock , dann zwischen Mockito .
Ich würde "einfaches" jMock und EasyMock belassen, da sie nur Proxy und CGLIB verwenden und keine Java 5-Instrumentierung wie die neueren Frameworks verwenden.
jMock hatte auch über 4 Jahre lang keine stabile Version. jMock 2.6.0 benötigte 2 Jahre, um von RC1 zu RC2 zu wechseln, und dann weitere 2 Jahre, bevor es tatsächlich veröffentlicht wurde.
In Bezug auf Proxy & CGLIB vs. Instrumentierung:
Das Obige wird von http://jmockit.org/about.html kopiert . Darüber hinaus vergleicht es sich (JMockit), PowerMock und Mockito auf verschiedene Weise:
(Zugegeben, die Quelle mag voreingenommen sein, aber gut ...)
Ich würde sagen, geh mit JMockit . Es ist am einfachsten zu verwenden, flexibel und funktioniert in nahezu allen Fällen, auch in schwierigen Fällen und Szenarien, in denen Sie die zu testende Klasse nicht steuern können (oder aus Kompatibilitätsgründen usw. nicht brechen können).
Meine Erfahrungen mit JMockit waren sehr positiv.
quelle
-javaagent
seit 1.42 ein Flag benötigt, da Sie sich seit Java 9 nicht mehr selbst anhängen können und das Finden geeigneter Workarounds offensichtlich nicht im Umfang des Entwicklers lag. Ein weiterer Punkt ist, dass JMockit es nicht mehr erlaubt, private Methoden und Konstruktoren zu verspotten, während PowerMock afaik macht.Ich habe sowohl mit Mockito als auch mit JMockit gearbeitet und meine Erfahrung mit ihnen ist:
Mockito:
EasyMock:
JMockit:
Außerdem andere Vorteile von JMockit:
Ich persönlich bevorzuge JMockit, das meiner Meinung nach funktionsreicher und flexibler ist, aber eine etwas steilere Lernkurve erfordert. Es gibt normalerweise mehrere Möglichkeiten, um den gleichen Spott-Effekt zu erzielen, und erfordert mehr Sorgfalt beim Entwerfen der Mocks.
quelle
Ich benutze jMockit nur wegen seiner Reflektionsbibliotheken in Deencapsultation.class. Eigentlich mag ich Mockitos Stil, aber ich weigere mich, meinen Code zu ändern und meine API zu verwirren, nur damit ein begrenztes Test-Framework darauf zugreifen kann. Und ich bin ein Fan davon, meinen gesamten Code zu testen. Daher möchte ich ein Framework, das private Methoden nicht einfach testen kann, nicht verwenden.
Dieser Artikel hat mich beeinflusst
Nach einer (zugegebenermaßen großen) Lernkurve ist jMockit jetzt mein Haupt-Unit-Test-Framework für Mocks.
quelle
Für das einfache Testen unserer Legacy-Codebasis (mit vielen statischen Methodenaufrufen usw.) war JMockit von unschätzbarem Wert. [Schamloser Plug für einen Artikel in meinem Blog]
quelle
Ich persönlich bevorzuge EasyMock .
Die Fähigkeit, zwischen netten, normalen und strengen Verspottungskontrollen umzuschalten, ist eine meiner Lieblingsfunktionen.
quelle