如何在不使用Maven / Ant的情况下从Eclipse中的测试类路径中排除一个persistence.xml?

时间:2011-07-28 09:34:49

标签: eclipse unit-testing maven classpath persistence.xml

在Eclipse中运行JUnit集成测试时,我在类路径上有两个persistence.xml文件 - 一个包含测试用例的配置,另一个用于生产。我需要找到一种方法从测试类路径中排除生产的persistence.xml。

约束:我不允许使用Maven或Ant,只使用Eclipse Helios SR1(使用JUnit)。 JPA 2持久性提供程序是EclipseLink 2.2.0。因为我必须使用ClearCase 7.0作为VCS,所以没有链接的资源,例如as described here

这是粗略的项目结构:

project-datamodel (containing the Entity beans)
\- src/resources/META-INF/persistence.xml (for production; want to exclude it)
\- test/resources/META-INF/persistence.xml (for test)

project-service (containing the Session beans)
\- ejbModule

project-service-it (containing the JUnit integration tests for the Session beans)
\- test

2 个答案:

答案 0 :(得分:1)

我遇到了这个问题,因为我的两个persistence.xml文件(生产和测试)使用了相同的<persistence-unit>名称。如上所述,类路径顺序无关紧要,因为EclipseLink在决定使用哪个文件之前显然会找到所有persistence.xml文件。我通过在xml文件和来自单元测试的调用中重命名测试PU来解决它:

@BeforeClass
public static void setup() {
    em = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME).createEntityManager();
}

答案 1 :(得分:0)

您可以在为单元测试创​​建运行配置时编辑类路径(如果从上下文菜单中选择“Run As - &gt; Junit Test”,Eclipse将自动创建一个。

编辑新的运行配置时,可以在“类路径”选项卡上添加自定义文件夹,然后将其移到默认类路径的前面。我没有尝试过,但是应该这样做,因为在测试中它会首先找到测试persistence.xml