私はSpringベースのプロジェクトに取り組んでいます。私のクライアントは、私のサービスと DAO 層の JUnit テスト ケースを書くように依頼しました。
使用するモッキング フレームワークに関して決定を下す必要があり、できるだけ早くクライアントに伝える必要があります。
これまでモッキング フレームワークを使用したことがありません。ネットでグーグル検索しているときに、Mockito、JMock、EasyMock などのことを聞いたことがあります。しかし、どれを使用すべきかについて説得力のある答えは得られませんでした。
したがって、適切なモッキング フレームワークを選択するための助けが必要です。
1 に答える
他のコメントが言っているように、これに対する決定的に正しい答えはありませんが、いくつかの理由から、私は間違いなくMockitoを使うことをお勧めします:
他のほとんどよりもはるかに優れたエラーの説明を提供します。検証が失敗すると、他に発生した呼び出し、場所、引数を正確に説明する例外が返されるため、デバッグが非常に簡単になります。
EasyMock:Mockitoが作成した古いフレームワークに比べて明らかな利点があり、EasyMock、JMockなどが従う古い記録/再生/検証プロセスよりもはるかに優れたモックモデルを非常に効果的に実装しています。これは非常に直感的で、コツをつかむのが非常に簡単であり、テストをはるかにクリーンで保守しやすくなります。
そのモデルは、他の多くの言語(Moqなど)でも直接人気があり、動的言語のモックスタイルに近づいています。これにより、それに精通している他の人を見つけるのが非常に簡単になり、後で他のツールを使用しやすくなります。
これは、Javaプロジェクトのモックに使用される標準フレームワークに急速になりつつあります。私は多くの企業のプロジェクトで自動テストに取り組んでおり、すでにMockitoを使用していて、積極的に移行している企業がかなりあります。'easymock mockito'を検索すると、EasyMockからMockitoに移行するための多くの結果が得られますが、他の方向にはありません。
EasyMockとMockitoの正確な違いの詳細については、https: //code.google.com/p/mockito/wiki/MockitoVSEasyMockをご覧ください。
より一般的には、絶対に必要な場合を除いて、PowerMockのようなフレームワークの使用は避けます。PowerMockを使用すると、通常のモックフレームワークではできないコードベースのさまざまな要素をモックできますが、これらをモックする必要があるという事実は、通常、他の根本的な設計上の問題の強力な指標です。PowerMockを使用せずに何かをテストできない場合は、テスト対象のコードの構造をリファクタリングできるかどうかを実際に検討する必要があります(たとえば、静的メソッドへの依存性から離れ、依存性注入を使用してコンストラクターの呼び出しを回避するなど)。 )。
また、マーティン・ファウラーの優れたモック入門もお読みになることをお勧めします。これは、説明したフレームワークの観点からは少し時代遅れですが、いくつかの優れた例を使用して、主要な概念の非常に優れた概要を提供します。