2012-05-30 20 views
5

Estoy creando una prueba de unidad Java para probar algún código que cambié recientemente. Sin embargo, el método que estoy probando una instancia de una clase que utiliza ResourceBundle ...La prueba de unidad de Java no puede acceder a ResourceBundle

ResourceBundle.getBundle("businessVariables").getString("product.name")); 

el archivo de recursos reside en el paquete web en Mycompany_web/src/main/webapp/WEB-INF/classes/businessVariables.properties

mi prueba de vida en mi paquete XML en Mycompany_xml/src/test/java/uk/co/mycompany/xmlapi/RequestProcessorTestNew.java

Durante la normalidad En tiempo de ejecución, el paquete de recursos está accesible, pero no cuando se ejecuta la prueba de mi unidad. Se lanza este error ...

Testcase: testCreateInitialStatusResponse(uk.co.mycompany.xmlapi.RequestProcessorTestNew): Caused an ERROR 
null 
java.lang.reflect.InvocationTargetException 
    at uk.co.mycompany.xmlapi.RequestProcessorTestNew.testCreateInitialStatusResponse(RequestProcessorTestNew.java:62) 
Caused by: java.lang.ExceptionInInitializerError 
    at uk.co.mycompany.xmlapi.RequestProcessorImpl.createInitialStatusResponse(RequestProcessorImpl.java:812) 
Caused by: java.util.MissingResourceException: Can't find bundle for base name businessVariables, locale en_US 

¿Qué debo hacer? ¿Puedo habilitar mi prueba para ver el paquete de recursos de alguna manera? ¿Puedo crear un archivo de recursos simulados en alguna parte que de alguna manera el código pueda ver?

+0

¿Ha intentado cambiar el nombre del paquete a la habitación del 'locale en_Us'? ver http://stackoverflow.com/questions/2083159/cant-find-bundle-for-base-name – Asaf

+0

De todos modos, siguiendo la respuesta de Kaylan, '/ webapp/WEB-INF/classes' parece una carpeta * target *. Mire en la estructura de su proyecto: el archivo del paquete sería mejor, por ej. 'Mycompany_web/src/main/resources/businessVariables.properties' – Asaf

Respuesta

5

Si ha compilado la estructura de su proyecto de acuerdo con el arquetipo Maven, su paquete de recursos idealmente debería estar en Mycompany_xml/src/test/resources. Luego puede ejecutar pruebas unitarias desde el inicio del proyecto, es decir, el directorio Mycompany_xml usando la prueba mvn.

Mientras empaquetas la guerra, copia el paquete de recursos de Mycompany_xml/src/test/resources a la guerra usando maven-assembly-plugin.

+0

Esto es correcto. Sin embargo, también tenga en cuenta que el archivo POM puede definir un lugar alternativo para poner los recursos file.e.g $ {} basedir/conf

1

Añadir

Mycompany_web/src/main/webapp/WEB-INF/classes/ 

a la ruta de clase de su unidad de prueba se ejecuta en.

Cuestiones relacionadas