スタブ関数の作成には、どのような方法がありますか?また、元の関数からスタブ関数への動作の切り替えはどのようにして行うのですか?
よくある質問(FAQ)
スタブ関数の作成には、どのような方法がありますか?また、元の関数からスタブ関数への動作の切り替えはどのようにして行うのですか?
カバレッジマスターのスタブ関数には、「共通スタブ」と「個別スタブ」の2つのタイプがあり、用途に応じて使い分けることが可能です。
「共通スタブ」とは、1つのサブ関数に対して1つのスタブ関数を作成し、すべてのテスト対象関数で共用利用するスタブです。
例えば、sub() を呼び出す2つの関数 func1() と func2() がある場合、sub()のスタブ関数 AMSTB_sub() を作成し、両方のテストで共通して使用します。そのため、呼び出し元のテスト関数ごとにスタブの振る舞いを変えることはできません。
これに対し「個別スタブ」とは、テスト対象関数ごとに、専用のスタブ関数を作成するタイプです。
例えば、sub() に対して func1() 用の AMSTB_func1_sub() と、func2() 用の AMSTB_func2_sub() を個別に作成します。これにより、テスト関数ごとにスタブに異なる機能や戻り値を持たせることが可能になります。
実際の運用については、「個別スタブ」は自由度が高い一方、スタブ関数の数が膨大になり、オブジェクトサイズを圧迫する要因となります。そのため、管理コストとリソースの観点から「共通スタブ」が選択されるケースが大半です。
作成したスタブ関数を適用する方法には、以下の2通りがあります。
1つ目は、「スタブ設定」ビューの置換スイッチによる一括設定です。
スタブのリストにある「置換」チェックボックスをオンにすることで、元の関数をスタブ関数に入れ替えて実行できます。
仕組みがシンプルで、素早く設定の切り替えが可能です。ですが、設定がプロジェクト全体(登録されている全CSV)に対して一律に適用されるため、CSVファイルごとにスタブのオン・オフを使い分けることができません。
2つ目は、「CSV別スタブ設定」による個別管理です。
スタブの置換情報をCSVファイルごとに保持し、テスト実行時に自動で切り替える方法です。この場合、「スタブ設定」ビューの置換スイッチは使用しません。
CSVファイルごとにスタブの有無を自由に制御でき、スタブの適用状態がCSVファイル内に記録されるため、テストエビデンスとしての信頼性が高まります。柔軟性と管理の正確性から、ほとんどのユーザーがこちらの方法を採用しています。
「CSV別スタブ設定」についての具体的な手順は、弊社セミナーテキストの「実習3 スタブ機能を使用してサブ関数を置換」「(参考)CSV別スタブ設定」の項目をご参照ください。