Mittwoch, 6. November 2013

Test Stub by Example

Im Gegensatz zu Dummy-Objekten, bei denen nicht relevante Abhängigkeiten eliminiert werden, sollen mittels Test Stubs spezielle Testvoraussetzungen geschaffen werden. Dafür wird unser Beispiel um die Anforderung erweitert, dass zur Happy Hour alles nur die Hälfte kosten soll.

Das Rechnungsdatum bisher vom Typ "java.util.Date" wird gegen ein eigenes Interface "IInvoiceDate" ersetzt. Dieses Interface definiert die Methode "isHappyHour()", welche die Ermäßigung ermöglicht.

Da die korrekte Berechnung zum Zeitpunkt der HappyHour getestet werden soll, wird für diesen Test eine Implementierung benötigt, die für "isHappyHour()" immer true liefert. Diese Implementierung ist der Test Stub.

In der Produktivimplementierung des Interfaces liefert die Methode "isHappyHour()" ihr Ergebnis in Abhänbgigkeit von der definierten Zeit. Das ist aber eine andere Verantwortlichkeit, für die ein eigener Test erstellt werden muss.

Die Rechnung sieht jetzt so aus:

Hier das Interface "IInvoiceDate":

Und hier der Test Stub:

Und damit sieht der Test wie folgt aus:

Damit wird der Unterschied zwischen Test Stubs und Dummy Objects (hoffentlich) klarer. Test Stubs schaffen spezielle Voraussetzungen für den Tests. Dummy Objects hingegen eliminieren für den Test nicht interessierende Abhängigkeiten. Im nächsten Artikel werden die Spy Objects erläutert.

Keine Kommentare:

Kommentar veröffentlichen