Estoy investigando qué marco de simulación usar para mi proyecto y lo he reducido a JMockit y Mockito .
Noté que Mockito fue votado como " el mejor marco simulado para Java " en Stackoverflow.
En la comparación de características en JMockit 's ' que imita la herramienta de Comparación Matrix ' Parece que JMockit tiene varias características diferentes.
¿Alguien tiene alguna información específica (no opiniones) sobre lo que Mockito puede hacer que no se puede lograr con JMockit y viceversa?
Respuestas:
Actualización de septiembre de 2019: el único marco de simulación compatible (por defecto) con Spring Boot es Mockito . Si usa Spring, la respuesta es bastante obvia.
Yo diría que la competencia es entre JMockit y PowerMock , luego Mockito .
Dejaría jMock y EasyMock "simples" porque usan solo proxy y CGLIB y no usan instrumentación Java 5 como los marcos más nuevos.
jMock tampoco tuvo una versión estable durante más de 4 años. jMock 2.6.0 requirió 2 años para pasar de RC1 a RC2, y luego otros 2 años antes de que se lanzara.
Con respecto a Proxy y CGLIB vs instrumentación:
Lo anterior se copia de http://jmockit.org/about.html . Además, se compara entre sí (JMockit), PowerMock y Mockito de varias maneras:
(concedido, la fuente puede estar sesgada, pero bueno ...)
Yo diría que vayas con JMockit . Es el más fácil de usar, flexible y funciona para casi todos los casos, incluso los difíciles y los escenarios en los que no puede controlar la clase que se probará (o no puede romperla debido a razones de compatibilidad, etc.).
Mis experiencias con JMockit han sido muy positivas.
fuente
-javaagent
indicador desde 1.42 porque ya no puede autoajustarse desde Java 9 y, obviamente, encontrar soluciones alternativas no estaba en el alcance del desarrollador. Otro punto es que JMockit ya no permite burlarse de métodos y constructores privados, mientras que PowerMock hace afaik.Trabajé con Mockito y JMockit, y mi experiencia con ellos es:
Mockito
EasyMock:
JMockit:
Además, otros beneficios de JMockit:
Personalmente, prefiero JMockit, que creo que es más rico en funciones y flexible, pero requiere una curva de aprendizaje un poco más pronunciada. Por lo general, hay varias formas de lograr el mismo efecto de burla y requiere más cuidado al diseñar las burlas.
fuente
Uso jMockit solo por sus bibliotecas de reflexión en Deencapsultation.class. De hecho, me encanta el estilo de Mockito, pero me niego a cambiar mi código y enturbiar mi API solo para que un marco de prueba limitado pueda obtenerlo. Y soy fanático de probar todo mi código, por lo que un marco que no puede probar fácilmente métodos privados no es lo que quiero usar.
Fui influenciado por este artículo
Después de una curva de aprendizaje (ciertamente grande), jMockit es ahora mi marco de prueba de unidad principal para simulacros.
fuente
Para probar fácilmente nuestra base de código heredada (con muchas llamadas a métodos estáticos, etc.), JMockit ha sido invaluable. [Plug descarado para un artículo en mi blog]
fuente
Personalmente prefiero EasyMock .
La capacidad de desviar entre controles burlones agradables, normales y estrictos es una de mis características favoritas.
fuente