サーチ…
テストクラスの構造
テストクラスは、特別なユニットテストインクルードでローカルクラスとして作成されます。
これはテストクラスの基本的な構造です:
CLASS lcl_test DEFINITION
FOR TESTING
DURATION SHORT
RISK LEVEL HARMLESS.
PRIVATE SECTION.
DATA:
mo_cut TYPE REF TO zcl_dummy.
METHODS:
setup,
"********* 30 chars *********|
dummy_test for testing.
ENDCLASS.
CLASS lcl_test IMPLEMENTATION.
METHOD setup.
CREATE OBJECT mo_cut.
ENDMETHOD.
METHOD dummy_test.
cl_aunit_assert=>fail( ).
ENDMETHOD.
ENDCLASS.
FOR TESTING宣言されたメソッドは単体テストになります。 setupは、各テストの前に実行される特殊なメソッドです。
ロジックからのデータアクセスを分離する
ユニットテストの重要な原則は、ビジネスロジックからデータアクセスを分離することです。このための効率的な手法の1つは、データアクセス用のインタフェースを定義することです。主なクラスは、直接データを読み書きするのではなく、常にそのインターフェイスへの参照を使用します。
プロダクションコードでは、メインクラスには実際のデータアクセスをラップするオブジェクトが与えられます。これは、選択ステートメント、関数mudule呼び出し、何か本当に可能性があります。重要な点は、このクラスでは何も実行しないことです。論理なし。
メインクラスをテストするときは、代わりに静的で偽のデータを扱うオブジェクトを与えます。
SCARRテーブルにアクセスする例
データアクセスインターフェイスZIF_DB_SCARR :
INTERFACE zif_db_scarr
PUBLIC.
METHODS get_all
RETURNING
VALUE(rt_scarr) TYPE scarr_tab .
ENDINTERFACE.
偽のデータクラスとテストクラス:
CLASS lcl_db_scarr DEFINITION.
PUBLIC SECTION.
INTERFACES: zif_db_scarr.
ENDCLASS.
CLASS lcl_db_scarr IMPLEMENTATION.
METHOD zif_db_scarr~get_all.
" generate static data here
ENDMETHOD.
ENDCLASS.
CLASS lcl_test DEFINITION
FOR TESTING
DURATION SHORT
RISK LEVEL HARMLESS.
PRIVATE SECTION.
DATA:
mo_cut TYPE REF TO zcl_main_class.
METHODS:
setup.
ENDCLASS.
CLASS lcl_test IMPLEMENTATION.
METHOD setup.
DATA: lo_db_scarr TYPE REF TO lcl_db_scarr.
CREATE OBJECT lo_db_scarr.
CREATE OBJECT mo_cut
EXPORTING
io_db_scarr = lo_db_scarr.
ENDMETHOD.
ENDCLASS.
ここでの考え方は、実動コードでは、 ZCL_MAIN_CLASSがZIF_DB_SCARRオブジェクトを取得し、 SELECTを実行し、ユニットテストがユニットテストのincludeに定義された静的データセットに対して実行されている間に、テーブル全体を返します。
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow