java - JPA persistence.xml 类路径是否位于?

标签 java unit-testing maven-2 jpa classpath

这就是我想要做的。我在 Web 应用程序中使用 JPA 持久性,但我有一组单元测试想在容器外运行。

我的主要 persistence.xml 位于我的主应用程序的 META_INF 文件夹中,它在容器 (Glassfish) 中运行良好。

我在 test-classes 目录的 META-INF 文件夹中放置了第二个 persistence.xml。这包含一个单独的持久性单元,我只想将其用于测试。在 Eclipse 中,我将此文件夹放在类路径中高于默认文件夹的位置,它似乎可以正常工作。

现在,当我直接从命令行运行 Maven 构建并尝试运行单元测试时,persistence.xml 覆盖被忽略。我可以在 Maven 生成的 test-classes 目录的 META-INF 文件夹中看到覆盖,我希望 Maven 测试使用这个文件,但事实并非如此。我的 Spring 测试配置覆盖,以类似的方式实现,正在运行。

我对 persistence.xml 是否通过类路径定位感到困惑。如果是的话,我的覆盖应该像 spring 覆盖一样工作,因为 maven surefire 插件 explains “[测试类目录] 将包含在测试类路径的开头”。

我是否错误地预测了 persistence.xml 文件的位置?

我可以(并且已经)在生产 persistence.xml 文件中创建第二个持久性单元,但将测试配置放入此生产文件感觉很脏。欢迎任何关于如何实现我的目标的其他想法。

最佳答案

不清楚你把“第二个”persistence.xml(测试版)放在哪里,但你应该把它放在 src/test/resources/META-INF .测试资源会自动添加到 Maven 为单元测试设置的类路径中,并优先于放置在 src/main/resources 中的资源。

关于java - JPA persistence.xml 类路径是否位于?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2638448/

相关文章:

java - 如何在Java中使用正则表达式解析文本文件并将结果写入另一个文件

java - 使用 log4j 在名称为当前日期的不同文件中记录特定级别 (FATAL)

unit-testing - 存储库模式和工作单元中的架构问题

maven-2 - 如何根据我的个人资料更改 maven 中的 .properties 文件?

Maven:如何在测试阶段包含依赖项并在集成测试阶段排除它?

maven-2 - 我应该在哪里放置 Maven Assembly 插件的自定义程序集描述符?

java - OpenShift:在应用程序长时间关闭期间,Pod 提前终止为 "not alive"

java - 根据两个旋转器更改图像

c# - 如果断言失败,自定义断言类应该做什么?

javascript - 如何使用 Jest toHaveBeenCalled 与不同的实例一起工作