私はサボテンとモック オブジェクト (jMock、Easy モック) と少し混同しています。
誰か次の質問に答えてくれませんか?
- テストに Cactus を使用するのはいつですか?
- テストに Cactus を使用しない場合
- テストにモック オブジェクトを使用するのはいつですか?
- テストにモック オブジェクトを使用しない場合
私はサボテンとモック オブジェクト (jMock、Easy モック) と少し混同しています。
誰か次の質問に答えてくれませんか?
まあ、この質問に対する非常に客観的な答えはありませんが、モックオブジェクトはコードの動作をテストすることに関するものですが、コンテナを正しく操作しているかどうかはわかりません。
Cactusはコンテナー内でコードを実行するため、実際には統合テストのようなものですが、コードが実際にコンテナーと正しく相互作用することを示しています(送信するものは正当であり、返されるものは本物です)。
つまり、モックは、動作xが必要な場合は、動作xを取得したことを示しています。Cactusは、動作xが実際にコンテナ内で期待される結果を取得することを示しています。
どちらを使用するかは、テストで何を達成しようとしているかによって大きく異なります。より多くのTDDを実行したい場合は、モックアプローチが最適です。個別のプロトタイピングを実行して、コンテナーがコードを記述するためにどのように機能するかを十分に理解しているかどうかを確認してから、単体テストを実行し、統合テスト/受け入れテストを実行して、すべてが機能することを確認します。
ただし、エッジケースと動作をテストするためにさまざまな値でコードをヒットする、より従来の単体テストを実行しようとしている場合、モックを使用して実行しても、大部分がコンテナがありません。
私は現在、モックアプローチを非常に好みますが、Cactusに戻る場合は、コンテナーに関する不変条件をテストして、コンテナーをアップグレードした場合に、コンテナーの動作に影響を与える重要な変更がないことがわかるようにすることをお勧めします。コード。
テストに Cactus を使用するのはいつですか?
統合テスト用 (コンテナーとの対話を含む)。それがカクタスのスイートスポットでした。これらのテストは通常、粗粒度であり、実行はそれほど高速ではありません。
テストに Cactus を使用しない場合
統合テスト以外のテストについて (統合テストについても、Cactus テストを久しぶりに見ました)。
テストにモック オブジェクトを使用するのはいつですか?
依存するものを分離して何かを単体テストしたい場合。これらのテストは通常、粒度が細かく、実行が高速です。
テストにモック オブジェクトを使用しない場合
統合テスト (つまり、相互作用のテスト) や機能テストなどを作成する場合。
Cactus Web サイトのMock Objects vs In-Container testingページは、これをかなりうまく要約しています。