ABAP - Schlüsselwortdokumentation →  ABAP - Referenz →  Programmbearbeitung →  Programme testen und prüfen →  ABAP Unit →  Testseams → 

TEST-SEAM

Kurzreferenz

Syntax

TEST-SEAM seam.
  [statement_block]
END-TEST-SEAM.

Wirkung

Die Anweisung TEST-SEAM leitet einen Testseam namens seam ein, der durch END-TEST-SEAM abgeschlossen wird. Eine Testklasse des aktuellen Programms kann mit der Anweisung TEST-INJECTION den Anweisungsblock statement_block durch eine dort definierte Injection ersetzen. Wenn keine Injection für den Testseam ausgeführt wird, wird der ursprüngliche Code ausgeführt.

Testseams haben folgende Eigenschaften:

Hinweis

Injections können nur in Testklassen angelegt werden, die in einem Test-Include des aktuellen Programms definiert sind. Derzeit sind Test-Includes nur für Class-Pools und Funktionsgruppen möglich. Daher sind Testseams auch nur in Class Pools und Funktionsgruppen sinnvoll.

Beispiel

Als Beispiel für produktiven Code dient hier die Klasse CL_DEMO_TEST_SEAMS. In der Methode CHANGE_PRICE wird der Preis eines Fluges in der Datenbanktabelle SFLIGHT mit einem Faktor multipliziert und bei erfolgreicher Ausführung der geänderte Preis zurückgegeben. Wenn ein Datenbankzugriff scheitert, wird statt des Preises ein spezifischer ungültiger Wert zurück gegeben.

Für beide Datenbankzugriffe sind Testseams definiert. Dadurch kann die Ausführung eines Modultests ohne Zugriff auf tatsächliche Daten durchgeführt werden. Siehe Beispiel zu TEST-INJECTION.

METHOD change_price.
  DATA wa TYPE sflight.
  TEST-SEAM selection.
    SELECT SINGLE *
           FROM sflight
           INTO wa
           WHERE carrid = carrid AND
                 connid = connid AND
                 fldate = fldate.
  END-TEST-SEAM.
  IF sy-subrc <> 0.
    new_price = - 1.
    RETURN.
  ENDIF.
  wa-price = wa-price * factor / 100.
  TEST-SEAM modification.
    MODIFY sflight FROM wa.
  END-TEST-SEAM.
  IF sy-subrc = 0.
    new_price = wa-price.
  ELSE.
    new_price = - 2.
  ENDIF.
ENDMETHOD.


Weiterlesen
END-TEST-SEAM