2012-03-09 22 views
13

¿Hay alguna manera de obtener pruebas de JUnit en Eclipse (específicamente, estoy usando SpringJUnit4ClassRunner) para usar los recursos de src/main/resources y src/test/resources?Agregar/src/main/resources a Classpath al ejecutar Spring JUnit Tests de Eclipse

El complemento seguro de Maven hace esto, pero ejecutar una prueba de unidad particular de Eclipse no lo hace.

Tengo una carga de configuración de Spring en src/main/resources/spring-config/ y quiero 'anular' dos archivos específicos. He colocado estas anulaciones específicas de prueba en src/test/resources/spring-config/, y cuando ejecuto pruebas unitarias a través de Maven, todo funciona. Cuando ejecuto una prueba JUnit desde Eclipse, solo, los archivos de prueba están disponibles y, como era de esperar, mi contexto no se carga.

actualización

Is aparece las clases de primavera que configuran el contexto de prueba no puede encontrar los recursos de src/main/resources/ cuando se utiliza un comodín, pero se encontrar si yo indique explícitamente.

no encuentra las cosas desde src/main/resources/

@ContextConfiguration(locations = {"classpath:/spring-config/*.xml"}) 

Hace encontrar archivos especificados desde src/main/resources/

@ContextConfiguration(locations = {"classpath:/spring-config/*.xml", 
            "classpath:/spring-config/app-aws.xml"}) 
+1

Solo para señalar a cualquiera que desee responder a la pregunta: "¿Hay alguna forma de que las pruebas JUnit en Eclipse/Maven utilicen recursos de' src/main/resources' y 'src/test/resources'? " (y no tan interesado en la parte de Spring), vea [esta respuesta] (http://stackoverflow.com/a/17452754/983430) para saber cómo hacerlo en Maven, o simplemente agregue una carpeta a su configuración de ejecución en Eclipse . –

Respuesta

7

Esto es en realidad una limitación de la primavera, en lugar de JUnit. Ver http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/resources.html#resources-wildcards-in-path-other-stuff para más detalles.

La solución es colocar los archivos de configuración de Spring en un paquete en lugar de en el paquete raíz.

+0

Si uso 'classpath *:', utiliza ambos conjuntos de archivos, pero evalúa ambos en lugar de dejar que la versión 'src/test/resources' tenga prioridad. ¿Hay alguna forma de evitar esto? –

+0

@Deejay debería nombrar realmente sus cosas en src/test como {algo} -test o similar, y hacer referencia explícita a esas cuando sea necesario; de lo contrario, nunca estará claro si se está refiriendo al archivo original o la versión de prueba – eis

+0

@eis Gracias por tus pensamientos Los recursos de IMO en src/test/resources no necesitan ninguna identificación adicional como recursos de prueba. Además, esto agrega complejidad al no poder emular un contexto de configuración completa, ya que terminaría con versiones de prueba y sin prueba de un archivo que se está cargando cuando se usan comodines. –

Cuestiones relacionadas