docs java unit-testing mocking easymock mockito

java - docs - mockito maven



¿Mockito preferible sobre EasyMock? (4)

Recientemente hice el cambio al marco de trabajo de Mockito y estoy muy feliz con él (ver también blog-post ). El cambio de EasyMock a Mockito fue muy sencillo y logré que las pruebas fueran compatibles (es decir, los casos de prueba se comportan igual).

¿Ves razones reales o criterios de tiroteo para preferir EasyMock sobre Mockito? Hasta ahora no puedo con el código base con el que trabajé, pero estoy interesado en su punto de vista.



Estoy más familiarizado con EasyMock que con Mockito, así que tuve que investigar un poco. Mockito tiene una page que hace una comparación explícita desde el punto de vista de Mockito.

Como yo lo veo, las ventajas de Mockito son:

  • Separación explícita de talón y verificación.
  • Los emparejadores se basan en Hamcrest (también compatible con JUnit) en lugar de una API personalizada
  • Los simulacros creados son siempre "buenos" es decir, las llamadas a métodos que no están bloqueadas devuelven datos limpios (como una lista vacía) en lugar de fallar

EasyMock tiene un conjunto de funciones muy similar. Los diferenciadores principales de Mockito se basan en aquellas áreas de EasyMock que el equipo de Mockito pensaba que eran limitaciones o prácticas subóptimas.

Desde un punto de vista funcional, ninguno de los productos es capaz de simular métodos estáticos (necesitaba hacer esto para realizar pruebas sin un MBeanServer), pero en ese caso, puede usar PowerMock sobre cualquier marco.

Yo diría que vaya con cualquier estilo que se ajuste a sus requisitos de prueba.

¡Espero que esto ayude!


Mockito fue desarrollado para permitir pruebas de unidad de estilo BDD, es decir:

  • Dado (el contexto en el que se ejecuta tu prueba de unidad)
  • Cuando (los eventos que producen el comportamiento que te interesa)
  • Entonces (el resultado que estás buscando).

Opuesto a

  • Dado
  • Espera (aquí es donde se realiza la verificación)
  • Cuando
  • Luego (regrese y observe lo que escribió en el documento Expect porque no hay información real aquí).

En mi humilde opinión, produce pruebas más legibles y le permite separar cosas como el contexto en el que está ejecutando (configurando los simulacros) y la verificación del comportamiento en el que está interesado. interacción, independientemente de si era relevante para el aspecto del comportamiento que estaba viendo en esa prueba o no.


Mockito puede ser mejor ahora de lo que era cuando lo probé por última vez, pero me perdió cuando cambió su API para que fuera incompatible con versiones anteriores. La actualización a la última versión me habría requerido cambiar muchas de mis pruebas de unidad existentes, lo que me pareció inaceptable. Decidí que era demasiado inmaduro e inestable para mis necesidades.

Sin embargo, eso no significa que haya algo malo en ello. La versión que estaba usando todavía funciona bien, aunque desde entonces volví a cambiar a EasyMock.