Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

このセクションの内容:

Child pages (Children Display)toc

プロジェクトのインポートとテストの実行

  1. C/C++testを起動します。

  2. 「ファイル」メニュー中の「インポート」を選択します

    Image Added

  3. 「一般」を展開し、「既存プロジェクトをワークスペースへ」を選択して、「次へ」を選択します。

    Image Added

  4. 「アーカイブ・ファイルの選択」で「Endless_Loop.zip」のパスを指定し、「終了」を選択します。

    Image Added

  5. インポートしたプロジェクトのトップを選択し、右クリック後「プロパティ」を選択します。

  6. 「Parasoft」 > 「C/C++test」 > 「ビルド設定」を選択し、「コンパイラ設定」の種類をご利用のGCCのバージョンに変更します。※gcc以外をご利用の場合は、ビルド不可のため設定の変更は不要です。

    Image Added

  7. 「03_Endless_Loop」プロジェクトがインポートされますので、「Run Unit Tests」テストコンフィギュレーションでテストを実行します。※テストケースの内容については、後述しています。

    Image Added

無限ループのテストで使用するマクロの説明

付属の"Endless_Loop"プロジェクトでは、無限ループのある関数のテストを実現するため、いくつかの専用のマクロを使用しています。ここでは各マクロの説明を記載します。

CPPTEST_REGISTER_JMP(expression)

引数の式を評価する際に、ジャンプできる箇所を設定します。内部的にsetjmp または sigsetjmp関数を使用しています。そのため、それらの関数が使用できない環境では使えません。テストケース内で使用し、無限ループのあるテスト対象関数の呼び出し時に、テスト対象関数を引数にして実行します。

...

※テストケースエディタでは、呼び出し欄に記載します

CPPTEST_JMP (value)

内部のlongjmp またはsiglongjmp の呼び出しを実行し、実行ステータスをCPPTEST_REGISTER _JMPの呼び出しに戻します。通常は、無限ループ内で呼ばれている関数のスタブで使用し、また引数に整数を渡すことができます。引数に渡された整数はcpptestGetJmpReturn関数を使用して参照することができます。

int cpptestGetJmpReturn()

最後にCPPTEST_JMPでジャンプした際の引数を返します。ループ回数を参照したりする際使用します。

...

サンプルプロジェクトの内容について

テストケースの内容

予め無限ループ内で呼び出される関数のスタブを作成しておき、15回目まではオリジナルを呼び出し、16回目の呼び出しではCPPTEST_JMPを呼び出すことでループを抜けています。

...