統合テストではモックを使用しますか?


24

私は現在、学期プロジェクトのために、単体テストや統合テストなど、複数のタイプのテストを実行する必要があるソフトウェアテストのクラスにいます。統合テストの場合、教授は統合テストにモックとモック作成ライブラリ(EasyMockやMockitoなど)を使用すると言いました。私はかなり混乱しています。統合テストとは、クラス、モジュール、サービスなどの外部をテストすることです。複数のクラスとサービスをテストする場合、統合テストでモックとスタブを使用するのが適切なのはなぜですか?


8
「統合」および「ユニット」のテストは、条件に関して普遍的に合意されていません。教授にこれらの用語をどのように定義したかを正確に尋ねることをお勧めします。
ラバーダック

1
ただのコメント。統合テストは、依存関係のテストに関するものではありません。それは、コードと依存関係(呼び出し、応答、エラー処理など)との適切な統合のテストに関するものです。
ライヴ

回答:


25

複数の外部コンポーネントに触れる機能を使用している場合、1つを除くすべてをモックして、特定のコンポーネントを分離してテストすることができます。たとえば、Webサービスを呼び出し、その結果に基づいてデータベースで何かを実行する関数があるとします。次の3つの統合テストを作成できます。

  1. Webサービス呼び出しを模倣するが、実際のデータベース接続を含むテスト。
  2. 実際のWebサービス呼び出しを行うが、模擬データベース接続を使用するテスト。
  3. 実際のWebサービス呼び出しを行い、実際のデータベース接続を伴うテスト。

3つのテストすべてを実行し、1と3が失敗した場合、合格したテストはモックデータベース接続を使用したテストのみであるため、データベースで動作するコードにバグがある可能性があります。

一般に、統合テストではモックを使用しませんが、時々このようなことをしました。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.