5

我正在创建一个 Java 单元测试来测试我最近更改的一些代码。但是,我正在测试的方法实例化了一个使用 ResourceBundle 的类……</p>

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

资源文件位于 web 包中Mycompany_web/src/main/webapp/WEB-INF/classes/businessVariables.properties

我的测试位于我的 xml 包中Mycompany_xml/src/test/java/uk/co/mycompany/xmlapi/RequestProcessorTestNew.java

在正常运行时资源包是可访问的,但在我的单元测试运行时不可访问。它会抛出这个错误……</p>

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

我应该怎么办?我可以让我的测试以某种方式查看资源包吗?我可以在某个地方创建一个代码能够以某种方式看到的模拟资源文件吗?

4

2 回答 2

6

如果您已经根据 Maven 原型构建了项目结构,那么您的资源包最好位于 Mycompany_xml/src/test/resources 中。然后,您可以使用 mvn test 从项目主目录(即 Mycompany_xml 目录)运行单元测试。

在打包战争时,使用 maven-assembly-plugin 将资源包从 Mycompany_xml/src/test/resources 复制到战争中。

于 2012-05-30T13:00:01.550 回答
1

添加

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

到您的单元测试正在运行的类路径。

于 2012-05-30T14:04:19.143 回答