「Isolation Framework」と「Mocking Framework」という用語の違いは何ですか?
2 に答える
受け入れられた答えは間違っていると思います。モック フレームワークは分離フレームワークでもあります。
Roy Oshroves の本「The Art of Unit Testing」のセクション 5.1 には、次のように書かれています。
分離フレームワークは、モック オブジェクトとスタブ オブジェクトの作成をはるかに簡単にするプログラム可能な API のセットです。分離フレームワークにより、開発者は繰り返しコードを記述してオブジェクトの相互作用をテストまたはシミュレートする必要がなくなります。
この定義は少し当たり障りのないものに聞こえるかもしれませんが、さまざまな分離フレームワークを含めるためには汎用的である必要があります。単体テスト フレームワークが関連付けられているほとんどの言語には、分離フレームワークが存在します。たとえば、C++ には mockpp などのフレームワークがあり、Java には jMock や EasyMock などがあります。.NET には、NMock、Moq、Typemock Isolator、および Rhino モックがあります。
彼のブログ投稿で、彼は次のように述べています。
分離フレームワーク (モッキングフレームワーク… しかし、それは恐ろしい名前です。モックという言葉はすでにオーバーロードされています)
したがって、通常は同じものを指します。分離フレームワークを使用してモックを開始できますが、他のテスト ダブルにも適用されます。分離フレームワークは、モック フレームワークが含まれるスーパーセットになります。
テストダブルは包括的な用語です
- テスト スタブ
- 偽物
- テストスパイと
- モック オブジェクト
4 つのタイプは Lasse Koskela の本「Effective Unit Testing 」からのものです。Martin Fowler と Gerard Meszaros は5 つのタイプを挙げています。
- ダミー オブジェクト
- 偽物
- スタブ
- スパイと
- モック
しかし、違いは同じです。
これら 2 つの用語は同じ意味で使用されることがよくありますが、重要な違いがあります。私の意見では、スタブとモックの間には同様の違いがあります。Stub ie Isolation Frameworkは事前定義された出力のみを提供するため、複雑な内部状態、遅い応答時間などを持つ外部システムから「テスト」を分離します。受信すると予想されるコールの仕様を形成します。したがって、モックはその使用法を追跡し、不適切に使用すると「テスト」に失敗します。ただし、スタブは定義済みの出力しか提供しません。