这是我想要做的事情。我在Web应用程序中使用JPA持久性,但我有一组单元测试需要在容器外运行。
我在主应用程序的META_INF文件夹中拥有主要的persistence.xml,在容器(Glassfish)中运行得很好。
我在test-classes目录的META-INF文件夹中放置了第二个persistence.xml。这包含一个单独的持久化单元,我只想用于测试。在eclipse中,我将此文件夹放在默认文件夹的classpath上方,看起来它可以工作。
现在当我直接从命令行运行maven构建并尝试运行单元测试时,persistence.xml覆盖被忽略了。我可以在maven生成的test-classes目录的META-INF文件夹中看到覆盖,并且我希望maven测试使用此文件,但它没有。我的Spring测试配置覆盖以类似的方式实现,正在工作。
我对于
我是否错误地预期了
我可以(并且已经)在生产
我在主应用程序的META_INF文件夹中拥有主要的persistence.xml,在容器(Glassfish)中运行得很好。
我在test-classes目录的META-INF文件夹中放置了第二个persistence.xml。这包含一个单独的持久化单元,我只想用于测试。在eclipse中,我将此文件夹放在默认文件夹的classpath上方,看起来它可以工作。
现在当我直接从命令行运行maven构建并尝试运行单元测试时,persistence.xml覆盖被忽略了。我可以在maven生成的test-classes目录的META-INF文件夹中看到覆盖,并且我希望maven测试使用此文件,但它没有。我的Spring测试配置覆盖以类似的方式实现,正在工作。
我对于
persistence.xml
文件是否通过类路径进行定位感到困惑。如果是这样的话,我的覆盖应该像 Spring 覆盖一样起作用,因为 Maven Surefire 插件 解释“[测试类目录] 将包含在测试类路径的开头”。我是否错误地预期了
persistence.xml
文件的位置?我可以(并且已经)在生产
persistence.xml
文件中创建第二个持久化单元,但将测试配置放入此生产文件中感觉很不好。欢迎提出任何其他实现目标的想法。