source data java unit-testing jpa java-ee ejb-3.0

java - data - El mejor marco actual para la prueba de unidades EJB3/JPA



persistence xml file (5)

En mi humilde opinión, sí, todavía son relevantes.

Con EJB3, puede probar su EJB como POJO normal o como bean administrado utilizando un contenedor EJB incorporado.

Lo mismo para JPA, puede incrustar una implementación de JPA para su prueba y usar una base de datos en memoria, o puede burlarse completamente de la capa de datos.

Para mi último proyecto de EJB, había escrito un poco de código de pegamento para probar el EJB porque el contenedor de EJB incrustado no era lo suficientemente maduro, pero ahora buscaría un contenedor de EJB incrustado + JUnit.

Algunos recursos

Pero hay muchos otros fáciles de encontrar.

Iniciar un nuevo proyecto utilizando EJB 3 / JPA, principalmente beans de sesión sin estado y trabajos por lotes. He usado JUnit en el pasado en aplicaciones web estándar de Java y parecía funcionar bastante bien. En la prueba de unidades EJB2 fue un dolor y se requirió un contenedor de ejecución como JBoss para realizar las llamadas. Ahora que vamos a trabajar en EJB3 / JPA, me gustaría saber qué están usando las empresas para escribir y ejecutar estas pruebas. ¿Junit y JMock aún se consideran relevantes o hay otros marcos más recientes que debemos investigar?


Para las pruebas de unidad , puede usar JUnit, TestNG y su marco de EasyMock favorito ( EasyMock , Mockito , PowerMock , JMockit , JMock ).

Para las pruebas de integración , puede iniciar / detener un contenedor empotrable (JBoss, OpenEJB, GlassFish v3) de sus pruebas. O, eche un vistazo a Arquillian , un nuevo jugador muy reciente para la prueba de integración de aplicaciones Java EE:

La misión del proyecto Arquillian es proporcionar un arnés de prueba simple que los desarrolladores puedan usar para producir una amplia gama de pruebas de integración para sus aplicaciones Java (lo más probable es que sean aplicaciones empresariales). Un caso de prueba puede ejecutarse dentro del contenedor, implementado junto con el código bajo prueba, o coordinando con el contenedor, actuando como un cliente para el código implementado.

Para evitar la introducción de una complejidad innecesaria en el entorno de compilación del desarrollador, Arquillian se integra de manera transparente con los marcos de prueba conocidos (por ejemplo, JUnit 4, TestNG 5), lo que permite que se inicien pruebas utilizando los complementos de prueba existentes IDE, Ant y Maven sin ningún complemento.

También verifique Mejora de la capacidad de prueba de Java EE con Arquillian 1.0.0 Alpha 1 Released y el espacio de Arquillan . Parece interesante de la OMI.


Puede optar por Apache OpenEJB que es una implementación ligera de EJB3.0 que se puede incrustar en TestNG.

Here puede encontrar un código de muestra que utiliza OpenEJB, TestNG y jMockIt para la prueba de unidades.


Una opción también es utilizar Spring, pero, por supuesto, su arquitectura también se basará en Spring en el tiempo de ejecución. La razón por la que me gusta Spring es que es fácil inyectar lo que se necesite para simular datos y objetos durante la fase de prueba, ya que puede anotar en el caso de prueba de JUnit qué archivo de contexto usar:

@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations={"classpath:test-context.xml"}) public class MyClassTest { @Autowired private MyClass myClass; @Test public void testMyMethod() {....}

Pero si no quieres usar Spring de todos modos, entonces esto es bastante irrelevante :) Por otra parte, es muy fácil cambiar de Spring después.


Yo sugeriría a Arquillian. Con Arquillian tiene las opciones para probar EJBs normales o beans CDI. Puede ejecutar su prueba de nuevo en un contenedor EE integrado, administrado o remoto. El proyecto arquilliano se mantiene continuamente ...

Sin embargo, no siempre es tan fácil realizar su primera prueba de prueba de Arquillian. Es posible que tenga problemas para encontrar las dependencias para la versión de arquillian y la versión de contenedor correctas. He publicado una serie de tutoriales sobre esto. Pero para no hacerme sospechar de la promoción, el enlace no está publicado aquí. Si lo desea, puede simplemente buscar en Google "Tutorial EJB3 Integration Test with Arquillian part1".