Mock-Objekt

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche

Mock-Objekte (auch Attrappe, von englisch to mock ‚etwas vortäuschen‘) sind in der Softwareentwicklung Objekte, die als Platzhalter für echte Objekte innerhalb von Modultests verwendet werden.

Es ist nicht immer möglich oder erwünscht, ein einzelnes Objekt vollkommen isoliert zu testen. Soll die Interaktion eines Objektes mit seiner Umgebung überprüft werden, muss vor dem eigentlichen Test die Umgebung nachgebildet werden. Das kann umständlich, zeitaufwändig, oder gar nur eingeschränkt oder überhaupt nicht möglich sein.

In diesen Fällen können Mock-Objekte helfen. Mock-Objekte implementieren die Schnittstellen, über die das zu testende Objekt auf seine Umgebung zugreift. Sie stellen sicher, dass die erwarteten Methodenaufrufe vollständig, mit den korrekten Parametern und in der erwarteten Reihenfolge durchgeführt werden. Das Mock-Objekt liefert keine Echtdaten zurück, sondern vorher zum Testfall passend festgelegte Werte. Das Mock-Objekt kann somit dazu verwendet werden, ein bestimmtes Verhalten nachzustellen.

Einsatz[Bearbeiten]

Konkret sind Mock-Objekte sinnvoll, wenn das „echte“ Objekt

  • von "unerwarteten Fehlern" während der Tests nicht beschädigt werden soll.
  • nicht deterministische Ergebnisse liefert (z. B. die aktuelle Uhrzeit oder die aktuelle Temperatur);
  • Schwierigkeiten bei der Vorbereitung oder während der Ausführung bereitet (z. B. beim Testen von Benutzungsoberflächen);
  • Verhalten zeigen soll, das nur schwer auszulösen ist (z. B. einen Netzwerkfehler);
  • langsam oder sehr komplex ist (z. B. eine vollständige Datenbank, die vor jedem Test erst initialisiert werden müsste);
  • noch nicht existiert (z. B. in größeren Software- oder Hardware-Entwicklungsprojekten);
  • Informationen und Methoden ausschließlich zu Testzwecken (und nicht für seine eigentliche Aufgabe) zur Verfügung stellen müsste;
  • nicht oder schwer rückgängig zu machende Prozesse anstößt (z. B. Dateien einer Netzwerkressource löscht);

Im Gegensatz zu Modultests testen Integrationstests das gesamte System aus miteinander verbundenen Komponenten (engl. units). Dabei werden normalerweise keine Mock-Objekte eingesetzt.

Siehe auch[Bearbeiten]

Literatur[Bearbeiten]

Weblinks[Bearbeiten]