【发布时间】:2011-02-07 23:14:53
【问题描述】:
这就是我想要做的。我在 Web 应用程序中使用 JPA 持久性,但我有一组单元测试要在容器外运行。
我的主应用程序的META_INF 文件夹中有我的主要persistence.xml,它在容器(Glassfish)中运行良好。
我在test-classes 目录的META-INF 文件夹中放置了第二个persistence.xml。这包含一个单独的持久性单元,我只想用于测试。在 Eclipse 中,我将此文件夹放在类路径中高于默认文件夹的位置,它似乎可以工作。
现在,当我直接从命令行运行 maven 构建并尝试运行单元测试时,persistence.xml 覆盖将被忽略。我可以在 maven 生成的 test-classes 目录的 META-INF 文件夹中看到覆盖,我希望 maven 测试使用这个文件,但事实并非如此。我以类似方式实现的 Spring 测试配置覆盖正在工作。
我对@987654330@ 是否通过类路径定位感到困惑。如果是这样,我的覆盖应该像 spring 覆盖一样工作,因为 maven surefire 插件explains“[测试类目录] 将包含在测试类路径的开头”。
我是否错误地预测了persistence.xml 文件的位置?
我可以(并且已经)在生产persistence.xml 文件中创建第二个持久性单元,但是将测试配置放入此生产文件中感觉很脏。欢迎任何其他关于如何实现我的目标的想法。
【问题讨论】:
标签: java unit-testing maven-2 jpa classpath