1

persistence-unitHibernate の hbm2ddlcreate-dropとその他の用途を除いて同一の2 つの svalidateがあります。データベースは liquiBase によって作成されます。

Eclipse から任意のテスト (in-mem db という名前の HSQLDB) を実行すると、正常に動作します。しかし、Maven からそれらすべてを実行すると、奇妙な外部キー違反でブレーキがかかります。

私が奇妙だと思うのは、4 つの異なるスレッドからメッセージを受け取り、たとえばテーブル ドロップがまだコンソールに書き込まれている間に永続ユニットの 1 つを閉じることです。

すべてが独自の ApplicationContext を持つ 4 つのスレッドを取得するのはなぜですか? 私は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
4

1 に答える 1

-1

ご存じのとおり、デフォルトでは、SureFire は別のスレッド (「フォーク」) でテストを実行します。参照: Maven Surefire プラグインは、複数のスレッドを使用してテストを実行しますか?

テスト、またはテストで使用される一部のライブラリが非同期で実行される可能性があります。テストを調べて、これが事実であるかどうかを確認する必要があります。

于 2012-10-12T20:16:44.527 に答える