O'Reilly logo

Unit-Tests mit ABAP® Unit by Damir Majer

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

141
7 ABAP Unit – Fortgeschrittene Techniken
»Simple things should be simple
and complex things should be possible.«
Alan Kay
Die fortgeschrittenen Themen, die hier behandelt werden, befassen sich mit Tech-
niken, die die Arbeit mit dem ABAP Unit Framework noch einfacher und effekti-
ver gestalten sollen. Sie erfahren in diesem Kapitel etwas über die Automatisie-
rung der Unit-Tests und welche Mittel Ihnen zur Verfügung stehen, um diese
einzusetzen. Wir beschäftigen uns außerdem mit der Frage, welchen Prinzipien
eine Testarchitektur folgt.
Übersicht über das Kapitel:
Methode, um Ihre Testdaten zu organisieren
ABAP Unit Fixtures
Automatisierung der Tests
Integration des ABAP Unit in den Code Inspector
7 ABAP Unit – Fortgeschrittene Techniken
142
7.1 Was nicht behandelt wird
In einem Kapitel über fortgeschrittene Unit-Test-Methoden würden einige Leser
gern das Thema Test-Double [Meszaros_07] behandelt sehen. Test-Double ist
der Oberbegriff für jegliche Methoden, die statt des »echten« Objekts eine
Attrappe nutzen.
Test-Double
Test-Double sind Attrappen: Sie implementieren die gleiche Schnittstelle wie die
»echten« Objekte und können diese deshalb für den Test ersetzen (und simulie-
ren).
Häufig werden bei Unit-Tests Ressourcen benötigt, die bei der Testausfüh-
rung nicht zur Verfügung stehen, weil sie z.B. noch nicht fertig sind oder die
Anbindung zu aufwändig wäre. In solchen Fällen kann es sinnvoll sein, Test-
Double einzusetzen.
Typische Beispiele:
Datenbank, Server, andere Programmkomponenten etc.
Tests können somit unabhängig von der Verfügbarkeit der »echten« Objekte
durchgeführt werden.
Bekannte Test-Double sind:
Mock-Objekte
Stubs
Ich habe mich aus drei Gründen entschlossen, dieses Thema nicht zu behandeln.
Der Umfang des Buches würde durch Behandlung dieses Themas erheblich
gesprengt werden.
Im ABAP-Umfeld stehen bis heute keine Tools zur Verfügung, die den Einsatz
von Test-Doubles unterstützen.
Ich persönlich halte es wie Martin Fowler in seinem lesenswerten Artikel
»Mocks aren‘t Stubs« [URL: mocks arent stubs]. Ich tendiere in die Rich-
tung des klassischen Test-Driven Development-Stiles und versuche in meiner
Arbeit größtenteils »echte« Objekte statt Attrappen zu verwenden.
7.2 Rund um das Thema Testdaten
Beim bisherigen Einsatz des ABAP Unit Frameworks haben wir versucht, uns
anhand unseres Softwaretest-Wissens geeignete Testfälle zu überlegen, um daraus
die Eingabe- und Ausgabewerte des Tests zu bestimmen. Die Bedeutung des Test-
falls in diesem Punkt ist wie folgt zu sehen:
143
7.2 Rund um das Thema Testdaten
Ein Testfall beschreibt in einer allgemeinen Art einen Satz an Daten (Testda-
ten) oder eine Testsequenz und ist somit Grundlage für die Spezifikation der
Daten (Testdaten).
Bestandteil des Testfalls sind somit
die zur Durchführung notwendigen Vorbedingungen (auch Preconditions
genannt), also die Menge der Eingabewerte,
die erwarteten Sollwerte und die erwarteten Nachbedingungen (Postcon-
ditions).
Testdaten sind ein wichtiger Bestandteil beim Einsatz des ABAP Unit Frame-
works. Natürlich erhalten wir durch das systematische Ermitteln von Testfällen
auch die Testdaten dazu.
Sie haben somit folgende Möglichkeiten, um sich Testdaten zu überlegen:
Anonymisierte Produktionsdaten nutzen
Vorhandene Testdatenbestände einsetzen
Selbst erstellte Testdatenbestände einsetzen
Nachdem Sie Ihre Testdaten ermittelt oder erhalten haben, ist die Frage, wie Sie
diese Testdaten in Ihren Tests integrieren. Unsere bisherige Lösung war, dass wir
in jeder Testmethode die Testkonstellation neu programmiert haben. Schon bei
Listing 6-21 (siehe Seite 138) war die Situation so, dass wir beim Test der initialen
Selektionsparameter die Datendefinitionen und das Erzeugen der Instanz
MO_REF
jedesmal in die jeweilige Methode implementieren mussten. Damit Sie beim
Erstellen eines Testkontextes nicht ständig Programmcoding kopieren müssen,
gibt es im ABAP-Unit-Umfeld das Konzept der Fixtures.
Fixtures
Ein Fixture ist eine Testkonfiguration, die vor dem Aufruf einer Testmethode her-
gestellt wird. Es enthält Testdaten, Testobjekte, Ressourcen und Verbindungen.
Das Implementieren von Fixtures können Sie in lokalen Testklassen oder ab SAP-
Basis-Release 7.00 in globalen Testklassen, durch die folgenden parameterlosen
Methoden im Sichtbarkeitsbereich
PRIVATE implementieren. Anhand der Namens-
konvention erkennt die ABAP-Laufzeitumgebung die Fixture-Methoden und ruft
diese auf. Folgende Fixture-Methoden stehen Ihnen zur Verfügung:
die Instanzmethode
SETUP, die vor jeder einzelnen Testmethode der Testklasse
ausgeführt wird,
die Instanzmethode
TEARDOWN, die nach jeder einzelnen Testmethode der Test-
klasse ausgeführt wird,
die statische Methode
CLASS_SETUP, die einmal vor allen Testmethoden der
Testklasse ausgeführt wird,

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required