ホーム > ユーザーサポート > FAQ カバレッジマスターwinAMS

FAQ / カバレッジマスターwinAMS

スタブ作成に関する問題

A03_01 : 同じ関数が何度も呼び出される場合、スタブ関数はどのように作成すると良いですか?

【質問】
テスト対象関数が同一のサブ関数を何度も呼び出す場合、戻り値などを呼び出し毎に変更したり、呼び出し毎に与えた引数を確認するには、スタブ関数をどのように作成すれば良いですか?

【テスト対象関数の例】
// sub_func()が2回呼ばれている場合

int a,b,c,d;
void func(int x)
{
    a = sub_func(x); // 1回目
    if ( a ) b++;
    c = sub_func(b); // 2回目
    if ( c ) d++;
}


【回答】
上記の様にsub_func()が2回呼ばれる場合、このスタブ関数各々の戻り値を設定するための変数(外部変数または関数内スタティック変数)と、渡された引数を格納するための配列を作成し、これらの配列をCSVファイルの入力/出力に指定します。例えば、下のようなスタブ関数を作成して、スタブ関数が呼ばれる毎に配列のインデックス番号(DBG_func_idx)がインクリメントされる様にすることで、呼び出し毎の戻り値の設定、渡された引数の出力が可能です。配列のインデクス数は、想定される呼び出し回数分を作成する必要があります。

【sub_func()の スタブ関数の例】
int DBG_func_arg[2]; /* 関数の引数保存域(2回分) */
int DBG_func_ret[2]; /* 関数の戻り値(2回分) */
int DBG_func_idx; /* 上記配列用のインデックス*/
int AMSTB_sub_func(int i)
{
    DBG_func_arg[DBG_func_idx] = i; /* 引数を保存域に転送*/
    return DBG_func_ret[DBG_func_idx++]; /* 指定の戻り値でリターン*/
}

この外部変数DBG_func_arg[]をテスト入力変数に、DBG_func_ret[]をテスト出力変数に指定します。

上の説明と、テストデータのイメージをまとめたPDFファイルを掲載しています。

 

 

関連サポート情報検索

【サポート情報サイト内Google検索】

検索キーワード: サブ関数複数回呼び出し | スタブ関数サンプル

他のキーワード検索


参考情報・リンク