java unit-testing jmock jmockit mockito

java - ¿Tiene JMockit algún inconveniente?



unit-testing mockito (2)

Esta comparison muestra que JMockit tiene varias ventajas sobre otros marcos.

¿Hay también alguna ventaja que uno de los otros (JMock, EasyMock, Mockito, Unitils, PowerMock + Mockito / EasyMock) tiene sobre JMockit?


Recientemente he adoptado un proyecto que utiliza JMockit y creo que la calidad del código ciertamente ha sufrido como resultado de la capacidad de la biblioteca para burlarse de métodos estáticos y privados.

Las pruebas son muy frágiles porque se están probando los detalles de implementación contenidos en métodos privados (por lo tanto, si cambio la forma en que la clase hace algo, puede interrumpir las pruebas, incluso si no se ha afectado lo que hace la clase).

El código también está plagado de llamadas a métodos estáticos: si los desarrolladores no hubieran tenido la capacidad de burlarse de ellos, creo que hubieran hecho un mayor esfuerzo para disociar las cosas un poco mejor.


Tres inconvenientes:

  • Debe utilizar un agente de Java para hacer la instrumentación de bytecode.
  • No puede utilizar el archivo junit.jar firmado que se incluye con Eclipse.
  • Tienes que aprender una API simulada. (En contraste con un objeto stub)

Siempre puedes discutir si es algo bueno poder burlarte de una clase final como JMockit. A menos que sea un código heredado, la refactorización suele ser una mejor alternativa.

Con IDE como Eclipse, me encuentro usando el soporte de herramientas para generar apéndices dentro de la clase de prueba con más frecuencia que burlones (JMockit, Mockito, etc.) en los últimos tiempos. La ventaja de este enfoque es que es muy simple. Esto es especialmente bueno cuando tienes un equipo con muchos desarrolladores y a algunos de ellos no les gustan las pruebas y tienen poca motivación para aprender un marco de burla. Además, las implementaciones de stub no tienen limitaciones de marco!

Si está abierto a apéndices como alternativa, debería consultar el blog de Robert C. Martin sobre burlas y apéndices here y here

Si no, ¡se ve muy bien! Aunque solo tengo experiencia con JMock, EasyMock y conocimientos básicos con JMockit.