Test Double ist Gerard Meszaros’ Oberbegriff aus „xUnit Test Patterns“ (2007) für jedes Objekt, das im Test eine echte Abhängigkeit ersetzt. Seine Taxonomie unterscheidet fünf Arten: Der Dummy füllt eine Parameterliste, der Stub liefert vorgefertigte Antworten, der Spy zeichnet Aufrufe auf, der Mock verifiziert erwartete Interaktionen, und der Fake ist eine vereinfachte, funktionierende Implementierung. Das präzise Vokabular verhindert Verwechslungen, etwa einen Stub „Mock“ zu nennen.
Test Double (Meszaros)
Details
- Vollständiger Name
-
Test-Double-Taxonomie nach Gerard Meszaros
- Auch bekannt als
-
xUnit Test Patterns Test-Double-Taxonomie
Kernkonzepte:
- Dummy
-
Objekt, das übergeben wird, um eine Parameterliste zu füllen, aber nie tatsächlich verwendet wird
- Stub
-
Liefert vorgefertigte Antworten auf Aufrufe während eines Tests; keine Verifikation von Interaktionen
- Spy
-
Zeichnet Aufrufe für spätere Assertions auf; ein Stub, der zusätzlich Interaktionsdaten erfasst
- Mock
-
Vorprogrammiert mit Erwartungen; verifiziert, dass bestimmte Interaktionen stattgefunden haben (interaktionsbasierte Verifikation)
- Fake
-
Funktionierende vereinfachte Implementierung mit Abkürzungen, die für Produktion ungeeignet sind (z.B. In-Memory-Datenbank, In-Memory-Repository)
- Test Double
-
Oberbegriff für jedes Objekt, das während des Testens für eine echte Abhängigkeit eingesetzt wird
- Vokabularpräzision
-
Unterscheidung zwischen dem, was ein Double IST (Taxonomie) und wann man es einsetzt (TDD-Schulphilosophie)
- Schlüsselvertreter
-
Gerard Meszaros ("xUnit Test Patterns: Refactoring Test Code", 2007)
Wann zu verwenden:
-
Präzise Kommunikation über Test-Isolationsstrategien
-
Auswahl des richtigen Double-Typs für ein gegebenes Testszenario
-
Vermeidung von Vokabularkollisionen (z.B. einen Stub "Mock" zu nennen löst falsches Denken aus)
-
Lehre oder Review von Testcode mit gemeinsamer Terminologie
Verwandte Anker:
-
TDD, London School - Philosophie des intensiven Double-Einsatzes (interaktionsbasiert)
-
TDD, Chicago School - Philosophie des minimalen Double-Einsatzes (zustandsbasiert)