私の統合テストの大部分はAbstractTransactionalSpringContextTests
、データベースにコミットする代わりに、スプリングを使用してロールバックを行います。これは正常に機能しますが、コミット段階まで外部キー制約が適用されないため、テスト戦略に穴があります。
どうすればテストを改善できますか?
テストの実行に時間がかかるため、可能であればコミットを避けたい (多数ある場合)
私の統合テストの大部分はAbstractTransactionalSpringContextTests
、データベースにコミットする代わりに、スプリングを使用してロールバックを行います。これは正常に機能しますが、コミット段階まで外部キー制約が適用されないため、テスト戦略に穴があります。
どうすればテストを改善できますか?
テストの実行に時間がかかるため、可能であればコミットを避けたい (多数ある場合)
セッションをフラッシュするなど、データベースにコミットしたくないことは理解していますが、この目的でインメモリ sqlite データベースを使用すると、パフォーマンスが許容される場合があります。
NHibernate (Fluent NHibernate を使用) とインメモリ sql-lite データベース ( how to here )を使用して単体テストを実行しました。完全なスキーマではなく、データベースの関連部分のみを作成する限り、これは非常に高速に機能します。
クラスを簡単に拡張AbstractTransactionalSpringContextTests
して db にフラッシュできます。spring.net ドキュメント 22.2.10またはspring.net フォーラムのこのスレッドを参照してください。テスト スイートでこれをすばやく機能させることができるはずです。