Stub
Stub
Ein Stub ersetzt eine benötigte Komponente durch ein Objekt mit gleichem Interface, das vorher festgelegte Reaktionen oder Rückgabewerte liefert.
- Dient als indirekter Test-Input.
- Keine Logik, nur fest definierte Antworten.
Spy
Spy
Ein Spy ist ein Stub, der zusätzlich alle Aufrufe und Daten protokolliert, die vom Testobjekt an ihn übergeben werden.
- Erfasst indirekte Outputs des Testobjekts.
- Wird für Diagnose oder Verifikation genutzt.
Mock
Mock
Ein Mock ist ein „intelligenteres“ Stub: Er nimmt Aufrufe entgegen, wertet sie aus und reagiert abhängig von Zulässigkeit und Korrektheit der Aufrufe.
- Verifiziert das Verhalten des Testobjekts (z. B. ob eine Methode korrekt aufgerufen wurde).
- Liefert bei Bedarf ebenfalls Rückgabewerte.
Fake
Fake
Ein Fake ersetzt eine reale Komponente durch eine vereinfachte, lauffähige Implementierung.
- Hat funktionale Logik, aber einfacher umgesetzt.
- Beispiel: In-Memory-Datenbank statt echter Datenbank.
Dummy
Dummy
Ein Dummy ist ein leeres Objekt oder Nullobjekt, das nur aus syntaktischen Gründen benötigt wird.
- Wird nicht ausgewertet.
- Hat keinerlei Bedeutung für das Testergebnis.
Eigene Test-Doubles
Eigene Testdoubles werden häufig als Fake oder Stub umgesetzt. Voraussetzung dafür ist meist ein Interface, das die Abhängigkeit beschreibt. Dieses Interface kann im Test durch eine eigene Implementierung ersetzt werden.- Interface
- Klasse
- Fake
- Test