¿Cómo prueba unitariamente el código Java EE?


Quiero preguntar por su forma preferida de probar el código Java EE?

Encontré solo tres proyectos, que están tratando de ayudar a codificar pruebas unitarias en el entorno Java EE:

Así que me pregunto,

  • ¿hay algún marco que ayude para escribir (j) prueba unitaria para código Java EE?
  • ¿utiliza servidores Java EE embebidos como jboss o glassfish v3?
  • ¿maquetas e inyectas por ti mismo?

Muchas Gracias...

Author: Blaise Doughan, 2009-12-22

4 answers

Si por Pruebas unitarias quiere decir... pruebas unitarias (probar una unidad de forma aislada), entonces en realidad no necesita ningún marco en particular, ya que EJB3.0 no son más que POJOs anotados y, por lo tanto, se pueden probar relativamente fácilmente sin ningún accesorio especial.

Ahora, si te refieres a otra cosa - como Pruebas de integración o Pruebas Funcionales - entonces, , las herramientas pueden ayudar y simplificar las cosas (pero realmente debería comenzar a usar la terminología correcta :) Asumiré que esto es lo que tienes en mente.

Primero, JUnitEE parece muerto y obsoleto y ni siquiera estoy seguro de que tenga algo para EJB3.x. En segundo lugar, no estoy impresionado por el Java EE 5 soporte de Cactus y tener que implementar pruebas de Cactus es doloroso (creo que Cactus era bueno para J2EE 1.4, pero es un poco anticuado ahora). Así que esto nos deja con Ejb3Unit que es en mi opinión la mejor opción, especialmente si desea ejecutar fuera de container prueba, es decir, sin desplegar realmente la aplicación (mucho más rápido).

Si desea ejecutar en las pruebas de container, entonces podría usar un contenedor incrustado y mi preferencia actual es GlassFish v3, incluso para Java EE 5 (puede que me equivoque, pero estoy bastante decepcionado por la hora de inicio de las últimas versiones de JBoss, por lo que no está recibiendo mucha de mi atención). Vea el post GlassFish Embedded Reloaded, un servidor de aplicaciones en su bolsillo para un código de ejemplo (que podría usar de sus pruebas) o Usando el complemento maven para v3 embedded glassfish (si está usando maven).

Otra opción sería empaquetar e implementar su aplicación con Cargo y luego ejecutar algunas pruebas contra la aplicación implementada (con Selenium o una herramienta BDD, por ejemplo). Esto podría ser útil si desea ejecutar pruebas de extremo a extremo con un contenedor que no proporciona ninguna API incrustada.

Entonces, para responder a su última pregunta, usaría herramientas disponibles, tal vez una combinación de ellas, para pruebas que no son pruebas unitarias y no se burlarían/inyectarían cosas a mí mismo, excepto si no cubren algunas necesidades que no puedo pensar en este momento.

 24
Author: Pascal Thivent,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-07-29 01:10:39

Como estás interesado en las pruebas unitarias, te recomiendo JUnit. Puede probar unitariamente los métodos en las clases principales. Si tiene dificultades para escribir casos de prueba unitaria usando JUnit, entonces probablemente el diseño no es modular y está altamente acoplado. Primero enfócate en tu funcionalidad principal y pruébala usando JUnit.

 2
Author: Sundar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-12-23 06:53:03

He estado enfrentando el mismo problema de ejecutar pruebas de integración basadas en JUnit en un contenedor Java EE 6 (Glassfish v3, para ser precisos), y después de mucha navegación y búsqueda, no pude encontrar una solución que realmente se adaptara a mis necesidades, así que escribí la mía, ahora publicada como jeeunit en Google Code.

No lo llamaría un marco de prueba, en realidad es solo un puñado de clases que proporcionan el pegamento entre JUnit y Embedded Glassfish.

La idea general es similar a Cactus, sus pruebas se ejecutan en el contenedor y se activan por un servlet desde el exterior.

Jeeunit soporta JUnit 4, Glassfish v3, CDI y genera los reportes estándar XML JUnit al igual que Ant o Maven Surefire (de hecho, reutilicé algo de código de Ant para generar los reportes).

 2
Author: Harald Wellmann,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-05-11 18:40:45

Tenía un requisito para probar una aplicación CDI y escribí un JUnit runner personalizado que ejecuta todo fuera del contenedor web.

Http://jglue.org/cdi-unit/

Es adecuado para Java SE y también admite ámbitos de solicitud, Sesión y conversación ficticios para probar aplicaciones web.

Es pequeño y rápido, lo cual es genial cuando tienes muchas pruebas unitarias.

 2
Author: Bryn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-11-18 23:25:11