「jmockit/samples/orderMngmntWebapp」サンプル・テスト・スイートのorderMngr.domain.customer.CustomerTest
をJMockitのフル・ディストリビューションで確認してください。 このテストクラスは、Hibernateエミュレーションに依存しています。これは "jmockit/build.xml"の "sampleTests"ターゲットを介して実行できます。
このツールを作成する私のモチベーションは、プロジェクトに何百ものマップされたエンティティがある場合、主にSessionFactoryの作成に時間がかかりすぎるということでした。 (400以上のエンティティクラスを持つプロジェクトでは、約20〜30秒かかりました。)これは、もちろん統合テストの一式です。単体テストの場合、このツールは有用ではありません。
開発者は、ローカル開発環境で統合テストをすばやく実行して、永続性ではなくビジネスロジックをテストでき、エミュレーションなしで自動ビルドサーバーで完全なテストスイートを定期的に実行できます。
Hibernateエミュレーションを使用すると、HQLクエリは引き続きテストされます。偽の実装はHQL文字列を解析し、メモリ内の "永続化された"エンティティインスタンスに対してクエリを実行します。ただし、O/Rマッピング情報は無視されます。
Mocking DAOsも完全に有効ですが、テストでは実際にO/Rマッピング、HQLクエリ、または実際のデータベースアクセスをテストすることはありません。 Hibernateエミュレーションを使用すると、モックは作成されませんが、メモリ内のデータベースに似た何かを提供する偽のHibernate実装でテストを実行できます。
興味深いことに、誰もそれを前に使ったことがありませんでしたか? –