「ABAP Unit:テストクラスについて」のグローバルクラスからの継承に記述しました疑似コメント「"#AU Risk_Level Harmless」について説明します。
まず、疑似コメント(pseudo-comment)とは、行末コメントの形でコンパイラやシステムに指示を行うためのもので、#の後に既定の文字列を書き、さらに指示内容を記述します。
この場合は、#AUでABAP Unitへの指示であることを示し、指示内容としてRISK_LEVELがHarmlessであることを記述しています。
RISK_LEVELがHarmlessであるということは、テストメソッド中で重要なデータの更新などシステムに重大な影響を与えるような処理を行っていないということになります。
そのほかの値としては「Alarming」と「Critical」があります。
「Critical」は、システムに影響するような処理を含むことを表します。
「Alarming」は、DBデータの更新などのような危険な処理を含むことを表します。
デフォルトでは「Critical」になります。
トランザクション SAUNIT_CLIENT_SETUP を使用して、どのレベルのリスクまでを実行許可するかを設定できます。初期設定は「Harmless」ですので、そのままの設定では、リスクレベルがHarmless のテストクラスのみが実行可能です。
したがって、通常のテストクラスには必ず疑似コメント「"#AU Risk_Level Harmless」を記述します。
Harmlessより上のレベルのテストを行いたい場合は、専用のクライアントを作成して、そのクライアントの設定を変更することを推奨します。
なお、グローバルクラスについては、「ABAP Unit:テストクラスについて」のサンプルのプロパティ画面の左下の方に「Limit of Risk Level」欄があります。
テストクラスを継承した場合、親クラスで設定したリスクレベル以下には子クラスのリスクレベルを設定することはできません。
親クラスで「Critical」を設定した場合、子クラスは「Critical」以外には設定できません。
親クラスで「Alarming」を設定した場合、子クラスは「Harmless」には設定できません。
親クラスで「Harmless」を設定した場合、子クラスは任意のリスクレベルを設定できます。
【参考】
HELP: ABAP Unit Tests
最近のコメント