2009-07-10 7 views
2

誰かがJMockit Hibernate Emulationを試してみたのですか?JMockit Hibernate Emulation

Jmockitのドキュメントによれば、Hibernateエミュレーションテストを実行すると、O/Rマッピング情報は使用されません。したがって、これは、O/Rマッピング、HQLクエリ文字列、ネイティブクエリなどをテストしないことを意味します。次に、実際にHibernateエミュレーションの利点は何ですか?私はMyDAO模擬を作成し、それをテストに使用することができます。なぜハイバネーションエミュレーションで気になるのは、すべてのDAOを模倣するだけです。どう思いますか ?

ありがとうございました。

+0

興味深いことに、誰もそれを前に使ったことがありませんでしたか? –

答えて

2

「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実装でテストを実行できます。

関連する問題