ABAP-Modultests starten in Testmethoden zu testende Prozeduren und prüfen dann, ob eine erwartete Wirkung eingetreten ist. Mit den Methoden der Klasse CL_ABAP_UNIT_ASSERT kann die Testmethode sicherstellen, dass die Erwartungen erfüllt werden.
Wenn ein Test die Testerwartung nicht erfüllt, werden die Fehler protokolliert und in der Testauswertung dargestellt. Optionale Eingabeparameter der Methoden regeln das Verhalten im Einzelnen.
Die Klasse CL_ABAP_UNIT_ASSERT enthält folgende Methoden zur Überprüfung von Testerwartungen:
ASSERT_EQUALS
Prüft die Annahme, ob zwei Objekte gleich sind. Die Objekte müssen einen vergleichbaren Typ besitzen. Es wird ein tiefer Vergleich durchgeführt, d.h. Tabellen und Strukturen (auch geschachtelt) werden auf den Inhalt ihrer Komponenten geprüft.
Standardmethode in Testklassen, die mit dem ABAP Unit Wizard generiert worden sind.
Die Methode ist erweiterbar, um komplexe Prüfungen von ABAP-Objektinstanzen vorzunehmen.
ASSERT_DIFFERS
Stellt die Verschiedenheit zweier elementaren Datenobjekte (Typ SIMPLE) sicher. Sollten die Typen der Datenobjekte nicht ineinander konvertierbar sein, wird einen Prüffehler ausgelöst.
ASSERT_BOUND
Prüft die Gültigkeit der Referenz einer Referenzvariable, indem sie die ABAP-Eigenschaft IS BOUND testet.
ASSERT_NOT_BOUND
Prüft die Ungültigkeit der Referenz einer Referenzvariable, indem sie die ABAP-Eigenschaft IS NOT BOUND testet.
ASSERT_INITIAL
Prüft ein Objekt auf seinen Initialwert, indem sie die ABAP-Eigenschaft IS INITIAL testet.
ASSERT_NOT_INITIAL
Stellt sicher, dass ein Datenobjekt NICHT seinen Initialwert hat (Prüfung auf die ABAP-Eigenschaft IS NOT INITIAL).
ASSERT_CHAR_CP
Stellt sicher, dass eine Zeichenkette zu einem einfachen Muster passt. Mögliche Ersatzzeichen sind Asterisk (*) und Fragezeichen (?). Überprüfen Sie reguläre Ausdrücke mit der Methode ASSERT_TEXT_MATCHES.
ASSERT_CHAR_NP
Stellt sicher, dass eine Zeichenkette nicht zu einem einfachen Muster passt. Mögliche Ersatzzeichen sind Asterisk (*) und Fragezeichen (?). Überprüfen Sie reguläre Ausdrücke mit der Methode ASSERT_TEXT_MATCHES.
ASSERT_TEXT_MATCHES
Stellt sicher, dass eine Zeichenkette die Bedingungen eines regulären Ausdrucks erfüllt.
ASSERT_TABLE_CONTAINS
Stellt sicher, dass ein Datenobjekt als Zeile einer internen Tabelle vorkommt.
ASSERT_NUMBER_BETWEEN
Stellt sicher, dass ein numerischer Wert in einem bestimmten Wertebereich liegt.
ASSERT_SUBRC
Fordert einen bestimmten Wert vom Rückgabewert sy-subrc.
ASSERT_EQUALS_FLOAT
Stellt die annähernde Gleichheit zweier Gleitpunktzahlen sicher. Gültige Datentypen sind DECFLOAT und F.
ASSERT_THAT
Stellt sicher, dass ein Datenobjekt die angegebenen Bedingungen erfüllt. Weitere Informationen finden Sie hier.
FAIL
Bricht einen Test mit Fehler ab.
ABORT
Bricht einen Test ab, weil Testvoraussetzungen nicht gegeben sind.
Methodenparameter
Alle Methoden besitzen die optionalen Importing-Parameter MSG, LEVEL und QUIT mit stets derselben Bedeutung:
MSG (Typ: CSEQUENCE) beinhaltet (ggf.) einen den Fehler näher beschreibenden Text
LEVEL (Typ: AUNIT_LEVEL) bezeichnet die Fehlerschwere und kann folgende Werte annehmen:
TOLERABLE- leichter (ggf. zu tolerierender) Fehler
CRITICAL- (Standardwert) kritischer Fehler
FATAL- schwerer Fehler
QUIT (Typ: AUNIT_FLOWCTRL) beeinflusst die Flusskontrolle im Fehlerfall.
Folgende Werte können übergeben werden:
NO- Kein Abbruch im Fehlerfall, die aktuelle Methode wird nach Aufruf der betreffenden Methode fortgesetzt.
METHOD- (Standardwert) Die aktuell bearbeitete Testmethode wird abgebrochen.
CLASS- Die aktuell bearbeitete Testklasse wird abgebrochen.
PROGRAM- Der Test des aktuell bearbeiteten Rahmenprogramms wird abgebrochen: Die aktuelle Testklasse wird abgebrochen und alle weiteren Testklassen des Programms werden ignoriert.
Alle Assert-Methoden besitzen den nicht-optionalen Importing-Parameter
ACT (Typ: Any) - das zu verifizierende Objekt
Die vergleichende Methode ASSERT_EQUALS benötigt darüberhinaus einen Parameter für die Erwartung:
EXP (Typ: Any) - ein Datenobjekt mit den erwarteten Werten und Eigenschaften.
Die vergleichende Methode ASSERT_EQUALS_FLOAT bietet darüberhinaus den Parameter
RTOL (Typ: f) - erlaubt es, den Vergleich von Fließpunktzahlen auf die übergebene Toleranz durchzuführen.