Java 有一个单独的persistence.xml文件用于测试

Java 有一个单独的persistence.xml文件用于测试,java,jpa,eclipselink,maven-3,Java,Jpa,Eclipselink,Maven 3,受此问题启发:我创建了一个文件夹结构,如下所示: src/main/resources/META-INF/persistence.xml src/test/resources/META-INF/persistence.xml 两个持久化单元都有相同的名称,因为我的目标是测试应该选择测试文件夹中的一个,否则应该使用“正常的”一个。 上述问题的答案声称“Maven在类路径中将测试类/资源放在主类/资源之前” 然而,这不是我所看到的。如果持久化单元具有相同的名称,它将始终使用src/main/re

受此问题启发:我创建了一个文件夹结构,如下所示:

  • src/main/resources/META-INF/persistence.xml
  • src/test/resources/META-INF/persistence.xml
两个
持久化单元
都有相同的名称,因为我的目标是测试应该选择
测试文件夹
中的一个,否则应该使用“
正常的
”一个。 上述问题的答案声称“Maven在类路径中将测试类/资源放在主类/资源之前” 然而,这不是我所看到的。如果
持久化单元
具有相同的名称,它将始终使用
src/main/resources/
中的名称


对于如何解决这个问题的任何建议都将不胜感激

因此,对最初引用的问题的回答似乎是错误的?因此,我最终制定了另一个策略,如下所示: 我有一个静态类,它总是用来获取持久化单元要使用的名称

public class PU_Name
{
  private static String puName = "pu_delopment";

  public static String getPU_Name(){
    return puName;
  }
  public static void setPU_Name(String name){
    puName = name;
  }
}
每当我创建EntityManager时,我都会按照下面的草图进行操作。在本例中,它将名称更改为使用“测试持久性单元”


真正的类更“高级”,因为它还检测OPENSHIFT环境变量的存在,并转移到使用“生产”数据库的持久化单元。

如何创建EntityManager工厂?EntityManager em=Persistence.createEntityManager工厂(“pu”).createEntityManager();当使用Maven运行时,它会将资源复制到目标,而不是使用srcIt works for meYes下的资源,但是如果上一个问题中的语句是真的,那么Maven在测试阶段首先读取测试资源(我就是这样理解的),为单元测试提供一个单独的persistence.xml文件真的很酷。但我想,这是我观察到的,这不是真的吗?
@BeforeClass
public static void initClass(){
  PU_Name.setPU_Name("puTest");
  emf = Persistence.createEntityManagerFactory(PU.getPU_Name());
}