这就是我想要做的。我在Web应用程序中使用JPA持久性,但我有一组单元测试,我想在容器外运行。
我的主要persistence.xml
位于我的主应用程序的META_INF
文件夹中,它在容器(Glassfish)中运行良好。
我在persistence.xml
目录的META-INF
文件夹中放了第二个test-classes
。这包含一个单独的持久性单元,我只想用于测试。在eclipse中,我将此文件夹放在类路径中比默认文件夹更高,它似乎有用。
现在,当我直接从命令行运行maven构建并尝试运行单元测试时,忽略persistence.xml
覆盖。我可以在maven生成的META-INF
目录的test-classes
文件夹中看到覆盖,我希望maven测试使用这个文件,但事实并非如此。我的Spring测试配置覆盖,以类似的方式实现了工作。
我很担心persistence.xml
是否位于类路径中。如果是,我的覆盖应该像弹簧覆盖一样工作,因为maven surefire插件explains“[测试类目录]将包含在测试类路径的开头”。
我是否错误地预测了persistence.xml
文件的位置?
我可以(并且已经)在生产persistence.xml
文件中创建第二个持久性单元,但是将测试配置放入此生产文件会感觉很脏。关于如何实现我的目标的任何其他想法都是受欢迎的。
答案 0 :(得分:4)
目前还不清楚您放置“第二个”persistence.xml
(测试版)的位置,但您应该将其放在src/test/resources/META-INF
中。测试资源会自动添加到Maven为您的单元测试设置的类路径中,并优先于src/main/resources
中放置的资源。
答案 1 :(得分:3)
persistence.xml
从类路径加载;在过去,我完全按照你的描述完成了。
这很可能是maven的一个问题。您可以通过使用-X
选项运行它来调试maven类路径。