0

2 つの個別の統合テスト ファイルがあり、それぞれに独自のコンテキスト構成ファイル (XML) があります。両方をビルド サイクルに組み込むと問題が発生しますが、どちらか@Ignore一方に注釈を付けると、すべて正常に動作します。

私が抱えている特定の問題は、永続性にあります。両方の統合テストがビルド サイクルにある場合、テストの 1 つがオブジェクトをデータベースに正しく保持しません。エラーは発生せず、永続的であると表示され、Hibernate は挿入中であることを示すログ エントリを出力しますが、データベース テーブルを確認しても何もありません。次に、テストを単独で(@Ignore他のテストで)実行すると、必要に応じてデータベーステーブルに書き込みます。

コンテキスト構成ファイルで同じ変数名を使用していることは重要ですか? たとえば、両方のファイルに「deviceTxManager」というトランザクション マネージャがあります。これらは異なるテストに使用される完全に別個の構成ファイルであるため、これで問題ないと思いました。

次のテストを実行する前に、以前の統合テストのコンテキストを何とか「パージ」する必要がありますか?

4

1 に答える 1

0

犯人は私のpersistence.xmlファイルにありました。私は使っている

<property name="hibernate.hbm2ddl.auto" value="create" />

これは明らかに、個別の統合テストクラスごとに個別に使用されます。そのため、2 番目の統合テストではデータベース スキーマを再作成し、前の統合テストで行われたデータベースの変更を削除しました。

persistence.xmlすべての統合テストが実行される前に一度だけアクセスされると思っていましたが、明らかに間違っていました。これは、個別の統合テスト クラスごとに個別にアクセスされ、データベースはクリアされ、テスト クラスごとに再作成されます。

于 2012-05-23T16:01:16.220 に答える