1

私のテスト コードでは、各メソッドに空のデータベースが必要です。テストの @Before を呼び出すために、それを達成するコードはありますか?

4

2 に答える 2

2

実際にはいつでも JPQL を使用できますが、

em
   .createQuery("DELETE FROM MyEntity m")
   .executeUpdate()
;

ただし、エンティティ キャッシュも消去されるという許可はないことに注意してください。しかし、単体テストの目的では、それは良い解決策のように見えます.

于 2010-07-26T08:44:59.457 に答える
0

私のテスト コードでは、各メソッドに空のデータベースが必要です。

トランザクション内でテスト メソッドを実行します (そして、各メソッドの最後でロールバックします)。それが通常のアプローチです。トランザクションをコミットしてデータベースにデータを書き込むポイントがわかりません。直後に削除した場合。コミットしないでください。

別の方法 (排他的ではありません) は、DbUnit を使用して、テスト実行前にデータベースを既知の状態にすることです。これを行う場合、通常はクリーンアップする必要はありません。

もう 1 つのオプションは、生の JDBC を使用してデータベースが存在する場合は削除し、JPA にデータベース全体を再作成させることです。ただし、かなり遅くなります。

于 2010-07-26T23:13:54.840 に答える