C/C++test は、テスト コンフィギュレーションで定義された条件に基づいてテスト ケースを生成します。
[生成] タブには以下の設定があります。
- 単体テストの生成を有効にする: テスト スコープ中のクラスに対してテスト クラスを生成するかどうかを指定します。このチェックボックスがオフの場合、他のすべてのテスト生成パラメーターが使用不可になります。
[全般] タブ
- テスト生成のパターン: テストの生成方法を指定します。適切な設定の選択方法については 「回帰テストと例外検出のためのテスト ケースの生成」 を参照してください。次のオプションがあります。
- テスト スイートが存在しない場合にテスト コードを生成する: 有効なテスト クラスがないコードについてテストを生成します。C/C++test は、[実行] > [生成] タブで指定された優先順位に基づいて、有効なテスト クラスを探します。
- テスト対象のファイルが更新された場合にテスト ケースを生成する: テスト クラス が生成された後に変更されたコードについて、テストを生成します。古いテストは上書きされます。
- テスト対象のファイルが更新されていない場合にテスト ケースを生成する: テスト クラスが生成された後に変更されていない各クラスについて、テストを生成します。
- 関数アクセス レベルのテストを生成: public/グローバル関数、protected 関数、および private 関数についてテストを生成するかどうかを指定します。
- protected 関数または private 関数のテストを生成するには、[private メンバーへ のアクセス] インストゥルメント オプションを有効にする必要があります。これは [実行] > [全般] > [インストゥルメント モード] で指定します。
- 1 つの関数につき生成するテスト ケースの最大数: 1 つの関数につき生成するテスト ケース の最大数を指定します。
- テスト ケースの説明を追加: 生成されるテスト ケースにユーザーによる説明を追加するかどうかを指定します。
[テスト スイート] タブ
- テスト スイート出力ファイルとレイアウト: テスト スイート ファイルの名前と場所を指定します。詳細については 「生成オプションのカスタマイズ」 を参照してください。
- テスト ケースの生成 (既存のテストスイートを使用): 既存のテスト ケースがあるコードに対して生成される新しいテスト ケースの処理を指定します。新しいテスト ケースで既存のテスト スイートを置き換えるか、それとも新しいテスト ケースを既存のテスト スイートに統合するかを指定します。適切な設定の選択方法については 「回帰テストと例外検出のためのテスト ケースの生成」 を参照してください。 次のオプションがあります。
- テスト ケースがない関数に対してテスト ケースを追加する: テスト ケースがない関数についてテスト ケースを生成します。既存のテストへの影響や変更はありません。
- すべての関数に対してテスト ケースを追加する: すべての関数についてテスト ケースを生成します。既存のテストへの影響や変更はありません。
- 既存のテスト スイートを置き換える: すべての関数についてテスト ケースを生成します。既存のテスト スイートは削除されて新しいテスト ケースで置き換えられます。
- テスト スイート内でテスト対象ファイルを参照する場合: CPPTEST_CONTEXT および CPPTEST_TEST_SUITE_INCLUDED_TO マクロで、プロジェクトの絶対パスと相対パス のどちらを使用するかを指定します。
- ほとんどの場合、フル パスの使用を推奨します。特別なケースでは、相対パスが有用なこともあります。たとえば、別の場所で使用されるコードのテストを生成し、さらにこのテストを複数の場所で使用する場合などです。例として、多くのプロジェクトで使用できるライブラリのソース ファイルがあり、このソース コードに一部のテストを接続させるものとします。この場合、ソース コードがプロジェクト中のどこにあるかに関係なく、フル パスを使用していないため、テストは正常に動作するはずです。
[テスト ケース] タブ
- テストの事前条件としてグローバル変数を初期化する: グローバル変数を初期化するかどうかを指定します。このオプションがオンの場合、自動生成テスト ケースは関連するグローバル変数を事前条件として初期化します。
- 派生クラスのオブジェクトを使用する: テスト対象のコンパイル単位で定義された派生クラスのオブジェクトを入力値として使用するかどうかを指定します。また、このオプションがオンの場合、抽象クラスのメソッドをテストする際に、そのような派生クラスのオブジェクトがプライマリ テスト オブジェクトとして使用されます。
- 入力値に経験値を使用する: 入力値に経験値を使用するかどうかを指定します。
- public 以外のメンバー変数を事前条件/事後条件で使用する: public 以外のメンバー変数を事前条件/事後条件で使用するかどうかを指定します。たとえば、あるクラス タイプのオブジェクトを作成するために private コンストラクターを使用するかどうか、メンバーワイズな事前条件の初期化で private フィールドを使用するかどうか、テスト ケースの事後条件の出力として private フィールドの値を表示するかどうかを指定できます。
- public 以外のメンバー変数を事前条件/事後条件で使用するには、[private メンバーへのアクセス] インストゥルメント オプションを有効にする必要があります。これは [実行] > [全般] > [インストゥルメント モード] で指定します。
- ポインターに null 値を使用する: テスト ケースの事前条件でポインター オブジェクトを初期化するために null 値を使用するかどうかを指定します。このオプションがオフの場合、null ポインターは自動生成テスト ケースで使用されません。
- クラスまたは構造体のオブジェクトをメンバーごとに初期化する: static ではないメンバーフィールドを変化させることによって事前条件でクラスまたは構造体のオブジェクトを初期化するかどうかを指定します。オンの場合、デフォルト コンストラクターを使用し、クラスと構造体の各メンバー フィールドに値を代入することによって、オブジェクトが作成されます。
- ファクトリ関数を使用する: ファクトリ関数を使用するよう C/C++test を設定します。ファクトリ関数の詳細については「ファクトリ関数の使用」を参照してください。ファクトリ関数を排他的に使用する場合は、[初期化にはファクトリ関数だけを使用する] チェックボックスもオンにします。
stdin/stdout/stderr ストリームをリダイレクトする: 自動生成テスト ケースにストリームリダイレクションのコードを自動的に挿入するかどうかを指定します。stdin にデータを追加したり、stdout/stderr を事後条件としてチェックできます。テスト ケースのコードは次のようになります。
... CppTest_StreamRedirect* _stdinStreamRedirect = CppTest_RedirectStdInput("some value"); CppTest_StreamRedirect* _stdoutStreamRedirect = CppTest_RedirectStdOutput(); CppTest_StreamRedirect* _stderrStreamRedirect = CppTest_RedirectStdError(); ... /* Tested function call */ ... /* Post-condition check */ ... CPPTEST_POST_CONDITION_CSTR_N("stdout", (CppTest_StreamReadData(_stdoutStreamRedirect, 0) ), 256) CPPTEST_POST_CONDITION_CSTR_N("stderr", (CppTest_StreamReadData(_stderrStreamRedirect, 0) ), 256)
- テスト オブジェクトのメモリ割り当て: オブジェクトをスタックに作成するか、それともヒープに作成するかを指定します。
- バッファー割り当てサイズ: char や int といった単純な型のバッファーを事前条件で作成するときに、このオプションで指定した数の要素がアロケートされます。
- 事前条件および事後条件をレポートするコードを挿入: テスト ケースの入力と出力のマクロ レポート値を自動生成テスト ケースに挿入するかどうかを指定します。
- テスト ケースの結果をレポートするためのコードを挿入: マクロ レポート テスト ケースの結果 (事後条件) を自動生成テスト ケースに挿入するかどうかを指定します。そのようなマクロを後から検証してアサーションに自動変換することができます。
- テスト ケースの結果の表示設定: 文字列型の表示に使用する最大文字数およびプリミティブ型のポインターの表示方法を指定します。プリミティブ型のポインターについては、最初の要素を表示するのか、ポインター割り当てに対する固定バイト数を表示するのかを指定できます。
- アサーション マクロのテンプレートを挿入する: コメント アウトされたアサーションを自動生成テスト ケースに挿入するかどうかを指定します。