1

我有两个s,除了其他用途 Hibernate 的 hbm2ddl和其他用途persistence-unit外,它们是相同的,并且数据库是由 liquiBase 创建的。create-dropvalidate

现在从 Eclipse 运行任何测试(名为 in-mem db 的 HSQLDB),它们工作正常。但是从 Maven 运行它们,它们会因奇怪的外键违规而刹车。

我认为奇怪的是,我从 4 个不同的线程获取消息,例如关闭其中一个持久性单元发生时,表丢弃仍被写入控制台。

为什么我得到四个线程,它们都有自己的 ApplicationContexts?我没有parallel为surefire设置参数,我也没有为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
4

1 回答 1

-1

您可能知道,默认情况下,SureFire 在不同的线程(“fork”)中执行您的测试。请参阅:Maven surefire 插件是否使用多个线程运行测试?

您的测试或您的测试使用的某些库很可能异步执行。您应该检查您的测试以验证是否是这种情况。

于 2012-10-12T20:16:44.527 回答