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

3 Beispiel mit ABAP Unit
28
In dem folgenden Dialogfenster geben Sie den Reportnamen ZAU_VERIFY_SEATS
ein. Weiterhin deaktivieren Sie die Checkbox mit TOP-Include.
Abb. 3–9
Programmnamen eingeben
Nun erscheint wieder das Dialogfenster mit dem zuletzt eingegebenen Transport.
Klicken Sie auf den Weiter-Button.
Abb. 3–10
Transportauftrag bestätigen
Der Report ZAU_VERIFY_SEATS ist angelegt und muss nun aktiviert werden.
Abb. 3–11
Programmcoding
© sap AG
© sap AG
© sap AG
29
3.1 Die Anforderung umsetzen
Das Aktivieren erreichen Sie, indem Sie in der Button-Leiste die Kerze anklicken.
Abb. 3–12
Programm aktivieren
Das Programm ZAU_VERIFY_SEATS ist nun aktiviert.
Geben Sie bitte folgendes Coding ein:
Listing 3–1
Report ZAU_VERIFY_SEATS.
data:
gs_sflight type sflight,
gs_saplane type saplane,
gd_sflight_max type i,
gd_sflight_free type i.
Dieser Teil war einfach. Nun werden wir im Schleifendurchlauf die Anzahl an
Sitzplätzen erhöhen, um dann mit dem Flugzeugmodell zu prüfen, ob die maxi-
male Anzahl an Sitzplätzen erreicht ist!
Listing 3–2
..
start-of-selection.
* Anhand des Flugzeugtyps der Fluggesellscahft wird die
* maximale Anzahl an Sitzplätzen selektiert,
* die aktuell belegt sind.
select single *
from sflight
into gs_sflight
where carrid = 'LH'
and planetype = 'A319'.
* In dem Feld SEATSMAX, SEATSMAX_B und SEATSMAX_F
* ist die Belegung enthalten. Diese Werte werden addiert
* und ergeben die Anzahl der maximal belegten Plätze.
gd_sflight_max = ( gs_sflight-seatsmax + gs_sflight-seatsmax_b +
gs_sflight-seatsmax_f ).
© sap AG
3 Beispiel mit ABAP Unit
30
Listing 3–3
* Nun wird die Anzahl gegen das Fassungsvermögen des Flugzeuges geprüft.
select single *
from saplane
into gs_saplane
where planetype = 'A319'.
* Nun ermitteln wir die Anzahl der freien Plätze und geben diese weiter an
* das Callcenter.
gd_sflight_free = gd_sflight_max - ( gs_saplane-seatsmax +
gs_saplane-seatsmax_b + gs_saplane-seatsmax_f ).
write:
/01 ' Aktuell belegt:', gd_sflight_max,
/01 'Freie Sitzplätze:', gd_sflight_free.
Das war´s! Ein paar Zeilen, welche die gewünschte Anforderung umsetzen.
3.2 Der Test
Es lohnt sich kaum, die 10 Zeilen Coding zu testen, doch in diesem Kapitel geht
es um ein einfaches Beispiel, um den Einsatz des ABAP Unit zu demonstrieren.
Den Test werden wir so aufbauen, dass wir einen Parameter mit dem Flugzeug-
modell übergeben und dann einen weiteren Parameter mit der Anzahl der zu
reservierenden Sitzplätze. Also legen wir gleich los mit dem ABAP Unit! Zuerst
definieren wir eine Klasse mit der entsprechenden Testmethode im bestehenden
Programm
ZAU_VERIFY_SEATS:
Listing 3–4
class lcl_test definition for testing.
"#AU Risk_Level Harmless
"#AU Duration Short
public section.
methods:
t1 for testing.
endclass.
Wir haben nun zunächst eine lokale Klasse im Programm definiert. Mit dem
Zusatz
FOR TESTING geben wir bekannt, dass es sich um eine Testmethode han-
delt. Nun wollen wir folgende Inhalte testen:
31
3.2 Der Test
Anzahl der Sitzplätze für den Flugzeugtyp ermitteln
Reduzierung um die frei verfügbaren Sitzplätze
Müsste dann den Wert der aktuell belegten Sitzplätze ergeben
Listing 3–5
class lcl_test implementation.
method t1.
* Anzahl an Sitzplätzen ermitteln
data:
ls_saplane type saplane,
ld_seats type i.
select single *
from saplane
into ls_saplane
where planetype = 'A319'.
* Fassungsvermögen des Flugzeugs
ld_seats = ( ls_saplane-seatsmax + ls_saplane-seatsmax_b +
ls_saplane-seatsmax_f ).
* Reduzierung um den bekannten ermittelten Wert (60)
ld_seats = ld_seats - 60.
Nun ist es so weit – wir implementieren den ersten Test, um folgende Anforde-
rung zu prüfen:
Wenn dieser Zustand eingetroffen ist, wird geprüft, ob eine Nachricht mit
dem Hinweis »alle Sitzplätze belegt« ausgegeben wird.
Dies erreichen wir dadurch, dass wir den aktuellen Inhalt der maximal zu reser-
vierenden Sitzplätze auf der Datenbank mit dem Inhalt vergleichen, der uns von
der Funktionalität des Programms gegeben wird. Hierfür benutzen wir die ABAP
Unit Klasse
CL_AUNIT_ASSERT. Die Klasse enthält diverse Prüfmethoden, um Tests
durchzuführen. Weitere Details erhalten Sie in dem späteren Kapitel »Einstieg
ABAP Unit«. Für den ersten Test werden wir uns der Methode
ASSERT_EQUALS
bedienen, die der obigen Anforderung entspricht.
Listing 3–6
...
* ld_seats enthält nun die frei verfügbare Anzahl
* an Sitzen, diese müssten mit der Variablen
* gd_sflight_max übereinstimmen, denn dort sind die
* freien Sitzplätze selektiert.
3 Beispiel mit ABAP Unit
32
cl_aunit_assert=>assert_equals(
act = ld_seats
exp = 280
msg = 'Anzahl entspricht nicht Datenbankinhalt!' ).
endmethod.
Endclass.
Fertig! Nun sind wir so weit, dass wir den ABAP Unit-Test durchführen können.
Dazu gehen Sie im Object-Browser zum Report
ZAU_VERIFY_SEATS und drücken Sie
die rechte Maustaste. Im erscheinenden Kontextmenü gehen Sie dann zum Menü-
punkt Ausführen und dann weiter zum Menüpunkt Modultest. Nach erneutem
Drücken des Menüpunktes wird der ABAP Unit-Test durchgeführt.
Abb. 3–13
Modultest ausführen
Das Ergebnis des Tests besteht nun darin, dass die ABAP-Unit-Ergebnisanzeige
erscheint. Die Anzeige enthält drei Bereiche. Der linke Bereich gibt Informationen
zum Ausführungsobjekt sowie zur zugehörigen Testklasse und Testmethode an.
Das rote Icon in der Spalte Zustand besagt, dass es Fehler beim Modultest gab.
Der nächste Bereich in der rechten oberen Hälfte gibt Auskunft zur Fehlermel-
dung, und der untere dritte Bereich enthält Detailinformationen zum ABAP Unit-
Test.
© sap AG

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