0

dbUnit に奇妙な問題があります。私は約 50 の単体テストを含むプロジェクトに dbUnit 2.4.4、Java 1.6、Spring (db 接続プールとして)、Oracle 9 を使用しています。それらのいくつかについては(一連のテスト全体を実行すると)、次のような例外が発生します。

Closed Statement
[junit] junit.framework.AssertionFailedError: Closed Statement
[junit]     at com.myproj.DataAccess.Internal.BaseDAOTest.importToDb(Unknown Source)
[junit]     at com.myproj.DataAccess.Internal.MyDAOTest.testGetBuyClientOrders(Unknown Source)
[junit]     at org.eclipse.ant.internal.ui.antsupport.EclipseDefaultExecutor.executeTargets(EclipseDefaultExecutor.java:32)
[junit]     at org.eclipse.ant.internal.ui.antsupport.InternalAntRunner.run(InternalAntRunner.java:423)
[junit]     at org.eclipse.ant.internal.ui.antsupport.InternalAntRunner.main(InternalAntRunner.java:137)

importToDb メソッドは、dbUnit の DatabaseOperation.REFRESH.execute メソッドを介して XML ファイルからデータベースにテスト データをロードし、すべてのテストで使用されます。問題のあるこれらのテストを個別に実行しても、問題はありません。あなたはなにか考えはありますか?ありがとう!

4

2 に答える 2

1

テストの中には、クリーンアップ時にデータベース接続を閉じるものがあると思います。次のテストでは、この接続をインポートに再度使用しようとして失敗します。

于 2009-10-21T15:10:30.820 に答える
1

これが私に起こったとき、2 つのプロパティを使用して長期的な接続を狙うように接続キャッシュを明示的に構成していました。

AbandonedConnectionTimeout
InactivityTimeout

タイムアウト プロパティについては、Oracle のドキュメントを参照してください。

クエリ + 処理時間は、結合された 2 つのプロパティ (AbandonedConnectionTimeout + InactivityTimeout < クエリ時間 + 結果セット処理時間) の先端をジャンプしているだけであることが判明しました。

この問題を解決するには、タイムアウト制限を上げるか、タイムアウトを 0 (デフォルト) に設定して削除します。

于 2011-05-27T12:40:44.430 に答える