Code: Alles auswählen.
"Highest price during Period
SELECT *
INTO TABLE rt_price_tbl
UP TO 1 ROWS
FROM /zzz/oc_price
WHERE
matnr = iv_matnr AND
werks = iv_werk AND
( bldat >= iv_date_from AND bldat <= iv_date_to )
ORDER BY BLDAT DESCENDING.
Code: Alles auswählen.
METHODS:
highest_price_wrong_plant FOR TESTING RAISING cx_static_check,
highest_price_wrong_matnr FOR TESTING RAISING cx_static_check,
date_not_in_period FOR TESTING RAISING cx_static_check,
date_from_not_within_period FOR TESTING RAISING cx_static_check, "no GE or >=
date_to_not_within_period FOR TESTING RAISING cx_static_check, "no LE or <=
not_the_highest_price_selected FOR TESTING RAISING cx_static_check,
no_order_by FOR TESTING RAISING cx_static_check,
wrong_order_by FOR TESTING RAISING cx_static_check, "Wrong Field to Sort
multiple_entries FOR TESTING RAISING cx_static_check. "more than one Entry
Code: Alles auswählen.
METHODS:
highest_price_valid FOR TESTING RAISING cx_static_check,
highest_price_no_data FOR TESTING RAISING cx_static_check,
Das mit den Testdaten ist mir natürlich klar, für jeden oben beschriebenen Testfall kommt noch eine Setup mit der Erzeugung der Testdaten. 😊ewx hat geschrieben: ↑14.06.2022 17:29Davon abgesehen, dass Unit Tests, die auf vorhandene Daten aus der DB angewiesen sind, IMHO keine Unit Tests sind, würde ich die detaillierte Variante nehmen.
Für verschiedene Testfälle brauchst du verschiedene Datenkonstellationen. Das heißt, in deinem Fall müsstest du dir die zugehörigen Datensets vorher (Methode SETUP) erzeugen und beim TEARDOWN wieder löschen.