2012-05-30 12 views
5

Sto creando un test unità Java per testare il codice che ho modificato di recente. Tuttavia, il metodo sono test un'istanza di una classe che utilizza ResourceBundle ...Test unità Java non può accedere a ResourceBundle

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

il file di risorse vive nel pacchetto web a Mycompany_web/src/main/webapp/WEB-INF/classes/businessVariables.properties

mia prova vive nel mio pacchetto xml a Mycompany_xml/src/test/java/uk/co/mycompany/xmlapi/RequestProcessorTestNew.java

Durante il normale runtime il pacchetto di risorse è accessibile, ma non quando viene eseguito il test dell'unità. Genera questo errore ...

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 

Cosa devo fare? Posso abilitare il mio test a vedere il pacchetto di risorse in qualche modo? Posso creare un file di risorse fittizio da qualche parte che in qualche modo il codice sarà in grado di vedere?

+0

Hai provato rinominando il bundle internet il locale 'en_Us'? vedi http://stackoverflow.com/questions/2083159/cant-find-bundle-for-base-name – Asaf

+0

Ad ogni modo, seguendo la risposta di Kaylan, '/ webapp/WEB-INF/classes' sembra una cartella * target *. Cerca nella struttura del tuo progetto: il file bundle sarebbe meglio ad es. 'Mycompany_web/src/main/resources/businessVariables.properties' – Asaf

risposta

5

Se la struttura del progetto è stata creata secondo l'archetipo Maven, il gruppo di risorse dovrebbe essere idealmente in Mycompany_xml/src/test/resources. Quindi è possibile eseguire i test unitari dalla home del progetto con la directory Mycompany_xml utilizzando il test mvn.

Mentre impacchetta la guerra, copia il pacchetto di risorse da Mycompany_xml/src/test/resources alla guerra usando maven-assembly-plugin.

+0

Questo è corretto. Tuttavia, si noti anche che il file POM può definire un luogo alternativo per mettere le risorse file.e.g $ {} BASEDIR/conf

1

Aggiungi

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

al classpath vostro unit test è in esecuzione in.