テストダブル
ジェラルド・メサローシュは、テストダブルのパターンとして、次の5つを挙げている。
テストスタブ (テスト対象に「間接的な入力」を提供するために使う。)
テストスパイ (テスト対象からの「間接的な出力」を検証するために使う。出力を記録しておくことで、テストコードの実行後に、値を取り出して検証できる。)
モックオブジェクト (テスト対象からの「間接的な出力」を検証するために使う。テストコードの実行前に、あらかじめ期待する結果を設定しておく。検証はオブジェクト内部で行われる。)
フェイクオブジェクト (実際のオブジェクトに近い働きをするが、より単純な実装を使う。例として、実際のデータベースを置き換えるインメモリデータベースが挙げられる。)
ダミーオブジェクト (テスト対象のメソッドがパラメータを必要としているが、そのパラメータが利用されない場合に渡すオブジェクト。)
モックオブジェクトやテストスパイは、テストスタブの機能を含む。
テストダブルにオープン標準は存在しないが、これらの用語を一貫して使用する機運がある。マーティン・ファウラーは、メサローシュの本に言及した「Mocks Aren't Stubs」という記事で、これらの用語を使っている。また、マイクロソフトは「Exploring The Continuum Of Test Doubles」と題する記事で、これらの用語と定義を使っている。