在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
答案 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
。