スタブの実行を監視して、スタブの呼び出し回数やスタブの呼び出しシーケンスといった期待動作をチェックすることができます。この期待動作は、テスト ケース内で定義し、テスト ケースの実行が完了した直後に検証しなければなりません。期待が満たされない場合、適切なメッセージが生成され、結果に出力されます。結果が確認された後、すべての期待動作がテスト ケースの実行の最後に削除されます。

(info) すべてのスタブ呼び出しがカウントされるよう、スタブの期待動作はすべてのテスト対象関数の呼び出しよりも前に定義する必要があります。

スタブ期待動作を設定するには、スタブ生成に使用するテスト コンフィギュレーションで以下のいずれかのオプションを有効にする必要があります。

  • スタブ コールバックの有効化
  • スタブ API の有効化 (非推奨)

詳細については動的スタブの設定」を参照してください。

以下の表は、利用できる期待動作の種類です。    

期待動作説明
CPPTEST_EXPECT_NCALLS(<func-id>, <value>)

<func-id> スタブの期待される呼び出し回数が、<value> に等しいことを定義します。

CPPTEST_EXPECT_NCALLS_MORE_THAN(<func-id>, <value>)

<func-id> スタブの期待される呼び出し回数が、<value> よりも大きいことを定義します。

CPPTEST_EXPECT_NCALLS_LESS_THAN(<func-id>, <value>)

<func-id> スタブの期待される呼び出し回数が、<value> よりも小さいことを定義します。

CPPTEST_EXPECT_NCALLS_IN_RANGE(<func-id>,<min>,<max>)

<func-id> スタブの期待される呼び出し回数が、<min> よりも大きく <max> よりも小さいことを定義します。

CPPTEST_EXPECT_CALL_SEQUENCE()
[Add<func-id>|AddNTimes<func-id>]
スタブに対する期待される呼び出しシーケンスを定義します。

以下のセクションでは、スタブの期待動作の最も一般的な例を取り上げます。

期待されるスタブ呼び出しの回数

期待されるスタブ呼び出しの回数の定義方法は、C と C++ の API で同じです。 

  • 期待されるスタブの呼び出し回数を定義します。
    以下の例は、スタブ foo が 3 回呼び出されることを期待します。
    [C/C++] CPPTEST_EXPECT_NCALLS("foo",3);
     
  • 期待されるスタブの呼び出し回数が値よりも大きいことを定義します。
    以下の例は、スタブ foo の呼び出し回数が 4 回以上であることを期待します。
    [C/C++] CPPTEST_EXPECT_NCALLS_MORE_THAN("foo",3);
     
  • 期待されるスタブの呼び出し回数が値よりも小さいことを定義します。
    以下の例は、スタブ foo の呼び出し回数が 3 回未満であることを期待します。
    [C/C++] CPPTEST_EXPECT_NCALLS_LESS_THAN("foo",3);

  • 期待されるスタブの呼び出し回数が範囲内であることを定義します。
    以下の例は、スタブ foo の呼び出し回数が 4 回以上 7 回未満であることを期待します。
    [C/C++] CPPTEST_EXPECT_NCALLS_IN_RANGE("foo",3, 7);

期待されるスタブ呼び出しシーケンス

期待されるスタブ呼び出しシーケンスを定義します。

以下の例は、スタブが以下の順序で呼び出されることを期待します。 foo -> goo -> foo (3 回) →go

[C]   CPPTEST_EXPECT_CALL_SEQUENCE()->Add("foo")->Add(goo")->AddNTimes("foo", 3)->Add("goo");
[C++] CPPTEST_EXPECT_CALL_SEQUENCE().Add("foo").Add(goo").AddNTimes("foo", 3).Add("goo");

この例で定義した期待される呼び出しシーケンスは、以下の状況で違反になります。

  • 呼び出しシーケンスで指定したスタブが、予測される順番で呼び出されなかった。
  • テスト ケースの最後に、期待される呼び出しシーケンス中の一部の関数が呼び出されなかった。
  • No labels