Esto es lo que estoy tratando de hacer. Estoy usando la persistencia de JPA en una aplicación web, pero tengo un conjunto de pruebas de unidad que quiero ejecutar fuera de un contenedor.¿Está ubicado JPA persistence.xml classpath?
Tengo mi primario persistence.xml
en la carpeta META_INF
de mi aplicación principal y funciona muy bien en el contenedor (Glassfish).
Puse un segundo persistence.xml
en la carpeta META-INF
de mi directorio test-classes
. Esto contiene una unidad de persistencia separada que quiero usar solo para prueba. En Eclipse, puse esta carpeta más arriba en el classpath que en la carpeta predeterminada y parece funcionar.
Ahora cuando ejecuto la construcción maven directamente desde la línea de comandos e intenta ejecutar las pruebas unitarias, se ignora la anulación persistence.xml
. Puedo ver la anulación en la carpeta META-INF
del directorio maven test-classes
generado y esperaba que las pruebas maven utilizaran este archivo, pero no es así. Las anulaciones de configuración de prueba de My Spring, logradas de manera similar, están funcionando.
Estoy confundido a si el persistence.xml
se encuentra a través del classpath. Si lo fuera, mi anulación debería funcionar como la anulación de primavera ya que el complemento maven surefire explains "[El directorio de la clase de prueba] se incluirá al comienzo de la ruta de clase de prueba".
¿He anticipado erróneamente cómo se encuentra el archivo persistence.xml
?
Pude (y tuve) crear una segunda unidad de persistencia en el archivo de producción persistence.xml
, pero parece sucio colocar la configuración de prueba en este archivo de producción. Cualquier otra idea sobre cómo lograr mi objetivo es bienvenida.
OK - Gracias por los comentarios. Al menos sé que no estoy haciendo algo que está totalmente por ahí. – Vinnie
OK - esto está funcionando ahora. Antes había nombrado cada unidad de persistencia en los diferentes archivos con el mismo nombre. Cambié la unidad de persistencia de prueba para tener un nombre diferente. No me parece correcto, pero tal vez esta es una limitación que no sabía. – Vinnie
Fui y desenterré el código donde lo había hecho antes, y sí tenía una unidad de persistencia diferente definida para las pruebas unitarias, aunque mi archivo persistence.xml de prueba tenía la misma unidad de persistencia (sin prueba) también definida. Sin embargo, probablemente no fue necesario. Creo que las pruebas unitarias usan la unidad de persistencia de prueba al crear el administrador de entidades. –