ABAP Unit Test Implementierung

Im vorherigen Beitrag habe ich gezeigt, wie man mit dem Wizard schnell eine Testklasse generieren kann. In diesem Beitrag werde ich die Testklasse vollständig implementieren.

Es wird eine statische Methode getestet. Somit wird keine Instanz der Klasse benötigt. Die Referenzvariable f_Cut und die Instanziierung in der SETUP Methode sind daher überflüssig. Auch die Methoden CLASS_SETUP und CLASS_TEARDOWN werden in diesem Beispiel nicht verwendet. Die beiden Methoden werden in einem anderen Beitrag näher behandelt.

Der Rumpf der Testklasse sieht nun wie folgt aus.

Durch Versorgen der Variablen IV_INPUT und EV_OUTPUT mit konkreten Werten ist die Testklasse bereits lauffähig. Allerdings wird die Methode dann genau einmal aufgerufen und nur einmal getestet. Ich möchte die Methode allerdings mit vielen Werten aufrufen und prüfen, ob das gewünschte Ergebnis erzielt wurde.

Dazu gibt es grundsätzlich zwei Wege. Entweder man erstellt für jeden einzelnen Testfall genau eine Methode, oder man erstellt eine interne Tabelle mit den Testdaten und verwendet die Tabelle in der Testmethode.

Da der Aufwand für den zweiten Weg deutlich geringer ist, erstelle ich eine interne Tabelle mit Testdaten. Die Testdaten enthalten auch Daten, bei denen die Konvertierung fehlschlagen muss.

Anlegen von Testdaten

Zunächst definiere ich eine interne Tabelle für die Testdaten. Sie enthält die zu testenden formatierten Datumswerte sowie das erwartete Ergebnis als Boolescher Wert. Die Definition wird im Abschnitt PRIVATE SECTION der Testklassendeklaration vorgenommen.

In der Methode SETUP werden nun die Datensätze erstellt. Dabei verwende ich das neue Schlüsselwort VALUE statt per APPEND neue Sätze zu erstellen.

In der Methode TEARDOWN löschen wir die Testdaten wieder. Dies wäre im konkreten Fall nicht notwendig, da die Daten beim nächsten Testlauf ohnehin neu erstellt werden. Die SETUP Methode wird schließlich vor jeder Testmethode aufgerufen.

Nun kommen wir zur Implementierung der ersten Testmethode. Diese soll alle Datensätze verarbeiten, die erfolgreich sein sollen.

Die Methode durchläuft alle Testfälle, die erfolgreich sein sollen. Nach dem Aufruf der Konvertierungsmethode prüft die statische Methode ASSERT_EQUALS, ob das erwartete Ergebnis erzeugt wurde. Wenn nicht, wird eine Nachricht in das Testprotokoll geschrieben. Der Parameter QUIT gibt an, was im Fehlerfall geschehen soll (z.B. Abbruch der Testmethode). In diesem Fall soll nichts weiter passieren.

Nun noch die Methode, welche die falschen Datensätze prüfen soll. Da die statische Methode eine Exception ausgibt, muss der ASSERT anders abgefangen werden.

Nun ist die Testklasse vollständig implementiert. Im nächsten Beitrag zeige ich, wie das Testframework aufgerufen wird.