我无法获取单元测试以使用src\test\resources
提供的资源而不是src\main\resources
中的资源。是的,所讨论的资源在两个地方的命名都是相同的。无法让Maven(和Eclipse)在测试时使用测试资源
我做的研究相当多,看着StackOverflow的岗位,如:
但是这个基本问题已经难住了我。下src\test
的Eclipse下src\main
- 应用源&资源&资源(感谢m2eclipse插件)已经:
我有一个非常标准的Maven的Java项目设置
src\main\java
,src\main\resources
,src\test\java
和src\test\resources
都在其构建路径中。使用此设置,当我在Eclipse资源文件中运行我的单元测试时,
src\main\resources
正在被引用。我可以看到为什么(因为它们处于构建路径中),但我不知道如何防止它。单元测试配置面板不允许我调整(默认)类路径组件的顺序。即使我想掩饰自己无法从Eclipse运行测试,Maven也不会很好玩。我可以看到
processResources
步骤是将所有测试资源复制到target\test-classes
树下。但是,执行单元测试时,正在咨询target\classes
下的资源文件的副本。当然,我可以俯视东西明显。我感谢您提供的任何帮助。
[编辑] 添加更多(可能相关的信息):
有问题的资源文件是一个名为
persistence.xml
文件。它由Eclipselink用于连接到关系数据源。该应用程序使用的文件版本位于src\main\resources\META-INF
中。 (例如WAR的)Maven版本将META-INF
目录放在classes
目录下。因此EclipseLink工具找到这个文件。src/main | + -- java/com/company/ProductDao.java | + -- resources/META-INF/persistence.xml (Requires application container) | src/test | + -- java/com/company/ProductDaoTest.java | + -- resources/META-INF/persistence.xml (out of container for unit tests) |
的外卖这里是:的EclipseLink需要在
META-INF
目录中称为persistence.xml
在classpath文件(是的,默认可以重写,但我们不要去那里)。因此,当单元测试运行时,调用相同的应用程序逻辑。但是不能使用
src\main\resources
中的文件版本。A 不同版本在src\test\resources
目录中可用。由于正在使用
src\main\resources
中的版本,因此出现,我唯一的办法是在单元测试期间指示Eclipselink查找不同的文件名。
我敢肯定,你可以在你的src/main/resources/META-INF/persistence.xml中创建一个新的持久化单元,你可以在单元测试和Persistence.createEntityManagerFactory中使用这似乎是什么反正你会用两个persistence.xml文件来做。 –
不同的持久性单元(可能)在同一个文件中。这是一个有趣的想法。我需要弄清楚如何指示类使用不同的持久性单元(PU)。在通过Java类上的注释识别PU之后(在我的情况下)使用Spring进行连线。感谢提示,我将不得不考虑它。 –