JPA をサポートする高速 Java 統合テスト用のシンプルで信頼性の高いメモリ内データベース
-
27-09-2019 - |
質問
PostgreSQL の代わりにメモリ内データベースを使用すると、統合テストははるかに高速に実行されるでしょう。私は JPA (Hibernate) を使用していますが、JPA の使用に簡単に切り替えられ、セットアップが簡単で、信頼性の高いメモリ内データベースが必要です。私はテストにデータ アクセス コードを採用したくないので、JPA と Hibernate (あるいはその逆) を広範囲にサポートする必要があります。
上記の要件を考慮すると、どのデータベースが最適な選択ですか?
他のヒント
私は使ってきました HSQLDB インメモリ Java での JPA/Hibernate 永続性の統合テスト用。非常に素早く起動し、特別な設定は必要ありません。
Hibernate で HSQLDB を使用する場合にこれまでに確認した唯一の問題は、バッチ サイズを 0 に設定する必要があるということでしたが、それは単に古いバージョンに関連している可能性があります。調査して、その問題の詳細が見つかるかどうかを確認します。
Derby はインメモリ モードをサポートしています 最近では、実験的なものではなくなりました。
私はダービーを使用しています。試験後、シャットダウンの必要がないので、一つには、それは、ユニットテストあたりのコードの約3以下の行です。ただし、落下などのEclipseLinkなどのテーブルを作成することができますJPA実装を使用する必要があります。
あなたはいつでもそれを参照データベースと復帰を持つことができますので、Derbyは、ファイルから新しいインメモリデータベースを初期化することができます。
ユニットテストのためにしかし、私は私のユニットテストの@Beforeロジックで私のオブジェクトを作成することを好む、それは私の基本的なデータベース構造を心配する必要はリファクタリングを行うとしないように柔軟性を可能にするよう、私は特にJPAで簡単にそれを見つける、他のツールこのようDbUnitを通り、実質的に静的な構造に依存しているとリファクタリングは、Eclipseのリファクタリング機能に頼るよりも、手動ではなく、DbUnitをXMLSの変更を意味します。