適切な@ContextConfigurationと@RunWithアノテーションが付いたJUnitテストクラス内でDAOテストを実行します。個々のテストでは、いくつかのデータをデータベースに格納し、健全性をチェックします。その後、データベースの状態を整理する予定です。メソッド/クラスを@Transactionalとマークするのは簡単な方法ですが、メソッドはトランザクション内で実行され、ロールバックは必要に応じて実行されます。Spring @ContextConfigurationのトランザクションテスト - データベースの問題をクリアする
問題は、DAOテストのこのアプローチが環境を完全にシミュレートしていないことです。私のJPAエンティティには、怠惰なコレクションフィールドがあります。私のコントローラコードでは、このエンティティをmyDao.getMyEntity(id)コールで取得し、遅延コレクションを繰り返します。アプリケーションランタイムで取得するのはLazyInitializationExceptionですが、実際にはトランザクションであるため、これはテストでは発生しません。 @Transactionalではないテストでテストを実行するにはどうすればよいのですか?テスト終了時にデータはまだクリアされていますか?
私はメモリ内のHSQLDBを使ってテストを行います。