ABAP Unit - Testausführung
Welche Möglichkeiten gibt es zur Ausführung von ABAP Unit und welche versteckten Funktionen kennst du vielleicht noch nicht? Mehr Details zu den verschiedenen Modi in diesem Artikel.
Inhaltsverzeichnis
Nachdem du deine Unit Tests geschrieben hast, geht es um die Ausführung der Tests und die Validierung des Ergebnisses. In diesem Artikel schauen wir uns einmal genauer an, wie du die Tests ausführen kannst und welche versteckten Funktionen es weiterhin gibt, um dir deine Tests einfacher zu machen.
Einleitung
Egal ob du per Test Driven Development (TDD) deine Unit Tests als erstes anlegst oder im Nachhinein deinen Code mit Unit Tests vervollständigst, am Ende geht es immer darum auch die Tests auszuführen und ein Ergebnis zu erhalten. Dazu stehen dir die verschiedenen Startoptionen zur Verfügung. Letzte Woche hatten wir dir die Quick Action vorgestellt und uns angeschaut, wie dieser deine Entwicklung beschleunigen kann. Die ABAP Quick Actions stehen allerdings aktuell nicht in älteren Releases zur Verfügung, allerdings gibt es eine Alternative, die wir in diesem Artikel ansprechen wollen.
Vorbereitung
Wir erweitern daher unser Beispiel von letzter Woche um eine zusätzliche Testklasse die wie folgt aussieht. Die Besonderheit ist hier, dass die Klasse ein hohes Risikolevel hat und die Ausführungszeit lang dauert, da wir hier mehr Aktionen ausführen.
CLASS ltc_low_runner DEFINITION FINAL
FOR TESTING RISK LEVEL CRITICAL DURATION LONG.
PRIVATE SECTION.
METHODS run_more_tests FOR TESTING RAISING cx_static_check.
ENDCLASS.
CLASS ltc_low_runner IMPLEMENTATION.
METHOD run_more_tests.
DATA(lo_cut) = NEW zcl_bs_demo_quick_actions( ).
DO 500 TIMES.
DATA(ld_number) = sy-index.
DATA(ld_expectation) = ld_number + ld_number.
DATA(ld_result) = lo_cut->adding_numbers( id_number1 = ld_number
id_number2 = ld_number ).
cl_abap_unit_assert=>assert_equals( exp = ld_expectation
act = ld_result ).
ENDDO.
ENDMETHOD.
ENDCLASS.
Möglichkeiten
Schauen wir uns einmal die Möglichkeiten über die "Run As" Option an, dort stehen uns zwei Möglichkeiten zur Verfügung. Deshalb wollen wir uns alle Möglichkeiten im Nachgang anschauen.
Preview
Wenn du den Preview (STRG + SHIFT + F9) aufrufst, dann werden nur alle Unit Tests des Objekts oder aller selektierten Objekte angezeigt. In diesem Modus erfolgt keine Ausführung, du kannst dir hier aber schon einmal einen Überblick über die vorhandenen Tests schaffen.
Möchtest du nur eine Testmethode ausführen, dann kannst du im Preview auch den entsprechenden Test/Methode wählen und findest weitere Optionen im Kontextmenü.
Ausführung
Bei der Ausführung (STRG + SHIFT + F10) werden alle Unit Tests gestartet und das Ergebnis angezeigt. Es erfolgt keine Eingrenzung der Methoden oder Tests. Allerdings werden die im System registrierten Grenzen eingehalten. In unserem Beispiel wurde die Testklasse mit "Critical" nicht ausgeführt und daneben finden wir eine Warnung.
Wie bereits beim Preview, besteht auch hier die Möglichkeit einzelne Testfälle per Kontextmenü zu starten. So musst du nicht alle Tests ausführen und kannst fehlerhafte Testfälle überprüfen.
Coverage
Die Coverage Analyse (STRG + SHIFT + F11) startet alle Unit Tests am Objekt und führt eine Abdeckungsmessung durch. Im Anschluss bekommst du das Ergebnis, wieviel deines Codes mit ABAP Unit Tests abgedeckt ist und auch das Ergebnis der Unit Tests.
Konfiguration
Über die Konfiguration (STRG + SHIFT + F12) kannst du die Ausführung oder den Preview noch steuern. Im ersten Schritt erhältst du ein Popup, auf dem du die verschiedenen Metriken einstellen kannst. Gleichzeitig gibt es auch die Möglichkeit einen Trace für den Unit Test zu starten.
Versuchst du allerdings auch hier die Grenzen der Systemeinstellung zu überschreiten, erhältst du eine Warnmeldung und der "Execute" Button ist nicht mehr aktiv. Damit ist nur noch der Preview der Testfälle möglich.
Fazit
Über den Preview und die Ausführung einzelner Tests über das Kontextmenü kannst du die Quick Actions in ADT ebenfalls nutzen, zwar etwas langsamer, aber trotzdem möglich. Neben der Ausführung der Abdeckungsmessung, könnte auch ein Trace sehr interessant sein.