新規テスト スイートの追加
ユーザー定義テスト ケースを新規に作成するには、次の操作を行います。
- テスト用のディレクトリを作成します。
- プロジェクト ツリーから見える場所であれば、テスト ディレクトリはどこでも構いません。デフォルトでは、テストはプロジェクトの tests ディレクトリの下に保存されます。この保存場所はテスト コンフィギュレーションで変更できます。 [実行] > [全般] タブの [テスト スイート ファイルの場所のパターン] オプションで設定します。
- テスト スイート ウィザードを開きます。次の操作を行います。
- テスト ディレクトリを右クリックします。
[Parasoft] > [ウィザード] > [新規テスト スイートの作成] をクリックします。ウィザードが表示されます。
- [Parasoft] > [C++test] > [テスト スイート] を選択し、[次へ] ボタンをクリックします。
- 次のテスト スイート パラメーターを設定します。
- テスト スイートの名前 テスト スイートの名前
- テスト スイートの場所 テスト スイートの場所
- テスト スイート ファイル テスト スイート ファイルへのパス。
- テスト スイートの言語 テスト スイートの実装言語。C または C++ を選択します。
- テスト対象ファイル 指定のテスト対象ソース ファイルにテスト スイート コンテキストをセットします。指定したファイルは
CPPTEST_CONTEXT
マクロとして設定され、このマクロは、テスト スイート ファイルを指定のソース ファイルと関連付けます。- ファイルを選択してウィザードを開始した場合、そのファイル名が [テスト対象ファイル] に表示されます。
- プロジェクトを選択してウィザードを開始した場合、コンテキストは指定されません。また、テスト スイートはプロジェクト スコープになります。つまり、プロジェクトのすべてのテストが実行される場合、またはテスト ファイルとしてテスト スイートが選択されている場合にだけ、テスト スイートは実行されます。テスト スイートをテスト ファイルとして選択した場合 (テスト スイートがコンテキストを持たない場合)、C++test はテスト スイートがプロジェクト コンテキストであると推測し、プロジェクト中のすべてのファイルをリンクのために準備します。
- テスト スイート モード テスト スイートを「スタンドアロン」にするか「インクルード」にするかを指定します。C++test はどちらのタイプのテスト スイートもインストゥルメントします。private/protected クラス メンバーにアクセスできます。
- インクルード 生成されたテスト ハーネス ソース ファイルの 1 つに、テスト スイートが物理的に含まれます。インクルード テスト スイートは、インストゥルメントされたコードと結合されて 1 つのオブジェクト ファイルにコンパイルされます。すべての自動生成テスト スイートがテスト スイートに含まれます。ヘッダー ファイルを含めることもできます。マクロ定義はオリジナル ヘッダーで定義できます。ただし、オリジナルのテスト対象ソース ファイルで見られない型がない限り、インクルード テスト スイートはヘッダーをインクルードする必要はありません。これは通常、テスト ファクトリをインクルードするためなどの場合に、生成されたテストを変更するときにだけ必要です。
- スタンドアロンテスト スイートは個別にコンパイルされてテスト用実行モジュールにリンクされます。ヘッダーは、テスト スイートに直接インクルードしなければなりません。インクルードされたヘッダーのカバレッジ情報を収集できます。
- (オプション) テスト ケースの名前を指定する場合、[次へ] ボタンをクリックしてテスト ケース名を入力します。
- [終了] ボタンをクリックします。
既存のテスト スイートにテスト ケースを追加する
既存のテスト スイートに新規テスト ケースを追加するには、次の操作を行います。
プロジェクト ツリーでテスト スイート ファイルを右クリックするかエディターでテスト スイート ファイルを開き、ショートカット メニューの [Parasoft] > [C++test] > [テスト スイート] > [テスト ケース テンプレートの追加] をクリックします。または、 テスト ケース エクスプローラーでテスト スイート ファイルを右クリックし、ショートカット メニューの [新規追加] > [テスト ケース テンプレート] をクリックします。
- テスト ケースの名前を入力します。新しいテスト ケースが追加されてテスト スイートの内容が変更されます。
- エディターでテスト スイートのソース ファイルを開き、テスト ケースの定義を入力します。必要に応じて他の変更も加えます。たとえば:
- 次のものを使用します。
- 標準の C/C++ コード
- マクロ ( 「C++test API ドキュメント」を参照)
- テスト関数 ( 「利用可能なテスト関数」を参照)
- 事後条件 (「テスト ケース事後条件マクロ」 を参照)
- #include ディレクティブおよびヘッダー ファイルのマクロ定義を使用します。
- #include ディレクティブを使って、テスト用実行モジュールをビルドするときに他のファイルをインクルードします。
CPPTEST_CONTEXT
マクロを使って、テスト スイートのコンテキストを変更します。このマクロは、テスト スイート ファイルを指定のソース ファイルと関連付けます。指定できるソース ファイルは 1 つだけです。コンテキストを指定しない場合、テスト スイートはプロジェクトが実行されるたびに実行されます。- テストの実行前にプロジェクト ツリーでソース ファイルまたはディレクトリを選択した場合、C++test はテスト コンフィギュレーションの [テスト スイート ファイルの場所のパターン] オプションで指定されたすべてのテスト ディレクトリをスキャンします。
- プロジェクト全体を選択した場合、テスト パス上のすべてのテスト スイートが実行されます。
- 1 つのテスト スイートまたは 1 つのテストを選択した場合、CPPTEST_CONTEXT マクロは、このテスト スイートが関連するソース ファイルをバックトレースするために使用されます。選択したテスト スイートだけが実行されます。
- 相対パスを使用する場合、パスは "./" または "../" で開始しなければなりません。
- 次のものを使用します。
- 変更したファイルを保存します。
テスト駆動開発 (TDD) のヒント
生成されたテンプレート中のテスト ケースは、失敗するように設定されています。ユーザーは、実装のソースを作成し、テストに満足した段階で失敗マクロを削除できます。
新しいプロセスを生む cout 文
他のプロセスを生む cout 文がある単体テストがある場合、改行文字ではなく endl を使って cout 文を終了してください。そうすると、出力が直ちにコンソールに表示されます。
たとえば
cout << "xyz\n";
ではなく
cout << "xyz" << endl;
を使用します。