java unit-testing junit ejb-3.0 java-ee-5

¿Cómo prueba la unidad el código Java EE?



unit-testing junit (4)

Como te interesan las pruebas unitarias, te recomiendo JUnit. Usted puede probar los métodos en las clases básicas. Si tiene dificultades para escribir casos de prueba unitaria utilizando JUnit, entonces probablemente el diseño no sea modular y esté altamente acoplado. Primero enfócate en tu funcionalidad principal y pruébala usando JUnit.

¿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 las pruebas unitarias en el entorno Java EE:

Así que me pregunto,

  • ¿Existe algún marco que ayude a escribir (j) la prueba unitaria para el código Java EE?
  • ¿Utiliza servidores Java EE integrados como jboss o glassfish v3?
  • ¿Te maquetas e inyectas por ti mismo?

Muchas gracias...


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 una gran cantidad de búsquedas y búsquedas, no pude encontrar una solución que realmente me satisficiera. , así que escribí el mío, ahora publicado 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 son activadas por un servlet desde el exterior.

jeeunit admite JUnit 4, Glassfish v3, CDI y genera los informes estándar de JUnit XML como Ant o Maven Surefire (de hecho, reutilizé algunos códigos de Ant para generar los informes).


Si, por prueba de unidad, quiere decir ... prueba de unidad (prueba de una unidad en aislamiento), entonces realmente no necesita ningún marco particular, ya que EJB3.0 no son más que POJO anotados y, por lo tanto, se pueden probar de manera relativamente fácil 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 deberías comenzar a usar la terminología correcta :) Supondré que esto es lo que tienes en mente. .

Primero, http://www.junitee.org/ parece muerto y obsoleto y ni siquiera estoy seguro de que tenga algo para EJB3.x. En segundo lugar, no estoy impresionado por la compatibilidad con Java EE 5 de http://jakarta.apache.org/cactus/ y tener que implementar las pruebas de Cactus es doloroso (creo que Cactus fue bueno para J2EE 1.4 pero ahora está un poco desactualizado). Así que esto nos deja con http://ejb3unit.sourceforge.net/ que en mi opinión es la mejor opción, especialmente si desea quedarse sin pruebas de contenedor , es decir, sin implementar la aplicación (mucho más rápido).

Si desea ejecutar pruebas de contenedor , entonces podría usar un contenedor integrado y mi preferencia actual es para GlassFish v3, incluso para Java EE 5 (puede que esté equivocado, pero estoy bastante decepcionado por la hora de inicio del último JBoss lanzamientos por lo que no está recibiendo mucha de mi atención). Consulte la publicación GlassFish Embedded Reloaded, un servidor de aplicaciones en su bolsillo para obtener un código de muestra (que puede usar en sus pruebas) o Cómo usar el complemento de Maven para v3 Glassfish incrustado (si está utilizando 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 incorporada.

Entonces, para responder a su última pregunta, de hecho usaría las herramientas disponibles, tal vez una combinación de ellas, para las pruebas que no son pruebas unitarias y que no me simularía o inyectaría cosas, excepto si no cubren algunas necesidades que puedo No pienses en este momento.


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

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

Es adecuado para Java SE y también es compatible con los á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.