2010-03-21 8 views
19

Iniciar un nuevo proyecto con EJB 3/JPA, principalmente beans de sesión sin estado y trabajos por lotes. He usado JUnit en el pasado en aplicaciones estándar de Java y parecía funcionar bastante bien. En las pruebas EJB2 de la unidad era un problema y se requiere un contenedor en ejecución como JBoss para hacer las llamadas. Ahora que vamos a trabajar en EJB3/JPA, me gustaría saber qué compañías están usando para escribir y ejecutar estas pruebas. ¿Siguen considerándose Junit y JMock relevantes o hay otros marcos más nuevos que hayan surgido que deberíamos investigar?Mejor marco actual para pruebas unitarias EJB3/JPA

Respuesta

10

en mi humilde opinión, sí, siguen siendo relevantes.

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

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

Para mi último proyecto EJB escribí un poco de glue code para probar el EJB porque el contenedor EJB incrustado no era lo suficientemente maduro, pero ahora iría por un contenedor integrado EJB + JUnit.

Unos recursos

Pero hay muchos otros fácilmente fáciles de encontrar

3

Usted puede ir para Apache OpenEJB cuales es una Implementación liviana EJB3.0 que puede integrarse en TestNG.

Here puede encontrar el código de muestra que usa OpenEJB, TestNG y jMockIt para probar la unidad.

8

Para pruebas unitarias, puede utilizar JUnit, TestNG y su marco favorito de burla (EasyMock, Mockito, PowerMock, JMockit, JMock).

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

La misión del proyecto Arquillian es proporcionar un instrumento de prueba simple que los desarrolladores pueden utilizar para producir una amplia gama de pruebas de integración para sus aplicaciones Java (aplicaciones empresariales más probables). Se puede ejecutar un caso de prueba dentro del contenedor, desplegado junto con el código bajo prueba o coordinando con el contenedor, actuando como un cliente para el código desplegado. Para evitar introducir una complejidad innecesaria en el entorno de desarrollo del desarrollador, Arquillian se integra de forma transparente con marcos de prueba familiares (ej. JUnit 4, TestNG 5), permitiendo el lanzamiento de pruebas utilizando los complementos de prueba IDE, Ant y Maven. .

también comprobar Improving the Testability of Java EE With Arquillian 1.0.0 Alpha 1 Released y el espacio Arquillan. Parece interesante IMO.

1

Una opción es también usar Spring, pero por supuesto su arquitectura también estará basada en Spring en el tiempo de ejecución. La razón por la que me gusta la primavera es que es fácil de inyectar lo que se necesitan datos y objetos cada vez simuladas durante la fase de prueba como se puede anotar en el caso de prueba JUnit qué archivo contexto de usar:

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(locations={"classpath:test-context.xml"}) 
public class MyClassTest { 

    @Autowired 
    private MyClass myClass; 

    @Test 
    public void testMyMethod() {....} 

Pero si Don No quiero usar Spring de todos modos, entonces esto es bastante irrelevante :) Por otro lado, es muy fácil cambiar de Spring luego.

1

Sugeriría Arquillian. Con Arquillian tiene las opciones para probar EJB normales o beans CDI. Podría ejecutar su prueba contra un contenedor EE encastrado, administrado o remoto. El proyecto Arquillian se mantiene continuamente ...

Sin embargo, no siempre es tan fácil hacer su primera prueba arquillian. Es posible que tenga problemas para encontrar las dependencias para la versión arquillian correcta y la versión del contenedor. He publicado una serie de tutoriales sobre esto. Pero para no hacerme sospechar de promocionar, el enlace no se publica aquí. Si lo desea, puede google "Tutorial EJB3 Prueba de integración con Arquillian part1".