java - sencillo - ¿Por qué no puedo acceder a src/test/resources en la prueba de Junit con Maven?
que es junit (2)
Acceda a MainConfig.xml
directamente. Los contenidos del directorio src/test/resources
se colocan en la raíz de CLASSPATH.
Más precisamente: los contenidos de src/test/resources
se copian en target/test-classes
, por lo que si tiene la siguiente estructura de proyecto:
.
└── src
└── test
├── java
│ └── foo
│ └── C.java
└── resources
├── a.xml
└── foo
└── b.xml
El resultado será el siguiente contenido de CLASSPATH de prueba:
-
/foo/C.class
-
/a.xml
-
/foo/b.xml
Para acceder realmente a los archivos desde el origen de Java, use getClass().getResource("/MainConfig.xml").getFile()
.
Tengo problemas para ejecutar el siguiente código:
configService.setMainConfig("src/test/resources/MainConfig.xml");
Desde dentro de un método Junit @Before.
¿Es esta la forma en que Maven construye su carpeta de destino?
Supongo que setMainConfig
espera la ruta de un recurso, que se cargará usando el ClassLoader, y no una ruta de archivo relativa. Sería útil si se vinculó al javadoc de este misterioso método configService.setMainConfig
.
Si mi suposición es correcta, entonces la ruta debería ser solo MainConfig.xml. Mave copia el contenido de src/test/resources
a la carpeta target/test-classes
(IIRC). Y esta carpeta de clases de prueba se encuentra en el classpath de las pruebas unitarias.