我有两个persistence-unit
,除了其他用途之外是相同的Hibernate的hbm2ddl create-drop
,另一个使用validate
,数据库由liquiBase创建。
现在从eclipse运行任何测试(HSQLDB命名为in-mem db),它们工作正常。但是从maven中运行所有这些,他们会因为异常的外键违规行为而制造。
我认为奇怪的是,我从4个不同的线程获取消息,例如关闭其中一个持久性单元时,表丢弃仍然写入控制台。
为什么我得到四个线程,都有自己的ApplicationContexts?我没有为{sure}设置parallel
个参数,我也没有为maven使用-T开关。
编辑:
这是来自Maven命令行输出的片段
Hibernate: drop table PostalCodeDistribution if exists
Hibernate: drop table PublicationAudit if exists
15:21:13.672 [Thread-2] INFO org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'TestPU-nocreate'
Hibernate: drop table PostalCodeDistributionAudit if exists
Hibernate: drop table PublicationInvoicing if exists
Hibernate: drop table PostalCodeSubscriberCountAudit if exists
15:21:13.672 [Thread-2] INFO org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl - HHH000030: Cleaning up connection pool [jdbc:hsqldb:mem:ptptest]
Hibernate: drop table Revision if exists
Hibernate: drop table PriceDate if exists
答案 0 :(得分:-1)
您可能知道,默认情况下,SureFire会在不同的线程(“fork”)中执行您的测试。请参阅:Does Maven surefire plugin run tests using multiple threads?
您的测试或测试使用的某些库可能是异步执行的。您应该检查您的测试以验证是否是这种情况。