2012-05-30 21 views
5

Tworzę test jednostki Java, aby przetestować kod, który ostatnio zmieniłem. Jednak metoda Jestem testowanie instancję klasy, która używa ResourceBundle ...Test jednostki Java nie może uzyskać dostępu do ResourceBundle

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

Właściciel mieszka w pliku zasobów w pakiecie internetowym w Mycompany_web/src/main/webapp/WEB-INF/classes/businessVariables.properties

Moje życie testowych w moim pakiecie xml w Mycompany_xml/src/test/java/uk/co/mycompany/xmlapi/RequestProcessorTestNew.java

Podczas normalnej Środowisko wykonawcze pakiet zasobów jest dostępny, ale nie wtedy, gdy uruchamiany jest mój test jednostkowy. Zgłasza ten błąd ...

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 

Co mam zrobić? Czy mogę włączyć mój test, aby w jakiś sposób zobaczyć pakiet zasobów? Czy mogę gdzieś stworzyć fałszywy plik zasobów, który w jakiś sposób będzie widoczny dla kodu?

+0

Czy próbowałeś zmienić nazwę paczkę do Suite 'locale en_Us'? zobacz http://stackoverflow.com/questions/2083159/cant-find-bundle-for-base-name – Asaf

+0

W każdym razie, zgodnie z odpowiedzią Kaylana, '/ webapp/WEB-INF/classes' wygląda jak folder * target *. Zajrzyj do struktury projektu - plik pakietu będzie lepiej dostępny w 'Mycompany_web/src/main/resources/businessVariables.properties' – Asaf

Odpowiedz

5

Jeśli zbudowałeś strukturę projektu zgodnie z archetypem Mavena, twój pakiet zasobów powinien znaleźć się w Mycompany_xml/src/test/resources. Następnie możesz uruchomić testy jednostkowe z domu projektu, np. Katalog Mycompany_xml, używając testu mvn.

Podczas pakowania wojny skopiuj pakiet zasobów z Mycompany_xml/src/test/resources na wojnę przy użyciu wtyczki maven-assembly.

+0

To się zgadza. Jednak również pamiętać, że plik POM można zdefiniować alternatywne miejsce do umieszczenia zasobów file.e.g $ {basedir}/conf

1

Dodaj

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

do ścieżki klasy Twój testu urządzenie pracuje w.

Powiązane problemy