Pregunta

Estoy construyendo una aplicación que utiliza OpenJPA 2.0.0, 1.3 Jersey, y JUnit 4.8.1.

he configurarlo de modo que tengo dos unidades de persistencia diferentes definidos en mi persistence.xml: "default" y "unittest." Por defecto está configurado para conectarse a una instancia de Oracle, mientras que unittest está configurado para conectarse a un archivo de base de H2DB incrustado local. Lo hago de manera que siempre comienzo mis pruebas unitarias con una base de datos limpia que tiene ciertos datos conocidos en el mismo, que puede ser sobrescrito entre cada ejecución de las pruebas unitarias.

El problema es que ahora quiero utilizar el Framework de Pruebas Jersey para probar mis servicios web reales, en lugar de sólo las capas inferiores del programa. Mis clases de recursos de la raíz no se cargan la unidad de persistencia unittest, que siempre se cargan por defecto.

Así que lo que probablemente tendrá que hacer es inyectar en las clases de recursos de raíz , que unidad de persistencia se debe utilizar para crear una instancia del EntityManager y, a continuación, tener alguna manera de inyectar unittest cuando estoy corriendo mi pruebas, pero por defecto inject lo contrario. Pero no puedo pensar en ninguna buena manera de hacerlo.

Estoy totalmente nuevo para el desarrollo de Java EE, que podría ser obvio.

Cualquier ayuda?

¿Fue útil?

Solución

Creo que debería ser posible crear una segunda persistence.xml en src / test / resources / META-INF.

Si entiendo las cosas correctamente, experto pondrá meta / prueba-clases en la ruta de clase por delante del objetivo / clases, de modo que en una prueba de unidad, sólo se leerá su persistence.xml prueba. De esa manera usted puede utilizar el mismo nombre de la unidad de persistencia, pero con una configuración diferente.

src/main/resources/
    META-INF
        persistence.xml  <-- for actual application

src/test/resources/
    META-INF
        persistence.xml  <-- for unit tests

EDIT:

¡Uy, me fue engañado para creer que ha utilizado Maven por la otra respuesta. Si no es así, olvidar lo que he dicho ...

Otros consejos

¿Está utilizando Maven? Si es así, hay un truco que le permite "leer" un valor POM en su clase Java. Que era muy útil para mí, que sólo tendría que establecer su nombre y apellidos unidad de persistencia en su POM, una diferente durante la prueba, y eso es todo.

Maven variables en el contexto de Java

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top