このセクションの内容
はじめに
コード カバレッジ結果にテスト開始/終了情報を付加し、特定のテスト シナリオがコードの実行に与える影響を理解するのに役立てることができます。テスト開始の通知にはテスト名情報が含まれ、テスト データの処理やレポートの生成を行う際に利用できます。
テスト開始/終了情報の付加機能は API として提供されており、さまざまなシナリオに適用できます。たとえば、コード カバレッジ結果を単体テストと関連付けたり、コード カバレッジ結果をシステム テスト中に実行された手動テスト シナリオと関連付けるなどです。
テスト開始/終了 API の使用
API には次の関数があります。
void CDECL_CALL CppTest_TestStart(const char* testName)
- 特定の名前を持つテストの開始に関する情報を結果ストリームに送信します。void CDECL_CALL CppTest_TestStop(void)
- 前に開始されたテストの終了に関する情報を結果ストリームに送信します。
API 関数を呼び出すソース ファイルに API 専用のヘッダー ファイルをインクルードします。
#include "cpptest/cpptest.h"
ソース ファイルをコンパイルするときに、-I オプションを使用して cpptest.h ヘッダー ファイルの場所を指定します。
-I <Installation Directory>/runtime/include
CppTest_TestStart 関数の引数として有効な文字列を指定します。Null ポインターまたは無効な文字列を渡すと、未定義の振る舞いの原因となります。
テスト開始/終了シナリオのよくある応用例
以下のシナリオは、テスト開始/終了通知 API の使用例を表しています。
カバレッジ結果に単体テスト名を付加する
このシナリオでは、単体テスト ケース名は CppTest_TestStart 関数の呼び出し引数として使用されます。一般的に使用される C/C++ 単体テスト フレームワークの中には、このタスクを自動化する専用のコネクタを提供するものもあります。単体テスト フレームワーク コネクタの詳細については、 「単体テスト」を参照してください。専用のコネクタがない単体テスト フレームワークを使用する場合、テスト ケースの開始時と終了時に開始/終了通知 API 関数を呼び出すことができます。
#include "cpptest/cpptest.h" TEST(TimerTest, smokeTest) { const char * tcName = testCaseName(); CppTest_TestStart(tcName); int res = init_timer(); ASSERT_TRUE(res != 0); CppTest_TestStop(); }
カバレッジ結果にシステム テスト セッションの手動テスト シナリオ名を付加する
この目的を達成するには、いくつかの方法があります。
- テスト開始/終了通知 API の呼び出しをテスト対象ソース コードに直接追加できます。テスト対象アプリケーションのデバッグまたはテスト ビルドで専用のマクロによって呼び出しをアクティベートできます。API 呼び出しにテスト シナリオ名を渡す方法は、アプリケーションのタイプによって異なります。一部のケースでは、テスト対象アプリケーションのメニューに、デバッグビルドまたはコマンド ラインでだけ使用できるオプションを追加できるでしょう。それによって、実行するテスト シナリオの名前を指定し、名前が入力されたら結果ストリームに通知を送信することが可能になります。
- テスト対象アプリケーションを開始する前に設定した環境変数からテスト ケースの名前を取得することもできます。
- テスト対象アプリケーションのスレッドと並行して開始される別のスレッドとして実装された特別なモジュールを使用します。そのモジュールは、たとえば TCP/IP ソケットを監視して、外部ツールからテスト開始/終了コマンドが送信されたときに応答します。