Java单元测试无法访问ResourceBundle

标签 java unit-testing junit easymock resourcebundle

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

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

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

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

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

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

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

最佳答案

如果您根据 Maven 原型(prototype)构建项目结构,理想情况下您的资源包应该位于 Mycompany_xml/src/test/resources 中。然后,您可以使用 mvn test 从项目主页(即 Mycompany_xml 目录)运行单元测试。

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

关于Java单元测试无法访问ResourceBundle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10816737/

相关文章:

java - JUnit 测试(正向和负向测试)

java - 事务回滚问题中的 infinispan 缓存对象更新

java - GWT RequestFactory - 向代理类添加自定义方法?

javascript - 测试 React 函数是用 Jest 调用的

java - 将命令接口(interface)(参见命令模式)的子类的所有测试类放在一个文件中是一个好的设计吗

java - 你如何用 junit 测试 if 语句?

java - iPhone 和 Android 网络

java - JPA 客户端-服务器复制/同步框架?

c# - 在 TDD 重构后编写更多单元测试

python - 如何测试 PyQt/PySide 信号?