このセクションでは、自動生成テスト ケースを参照する方法について説明します。

このセクションの内容 :

自動生成テスト ケースへのアクセス

自動生成テスト ケースはテスト スイート ファイルに保存されます。デフォルト設定では、C++test は1 つのファイルにつき 1 つのテスト スイートを生成します。設定を変えれば、1 つの関数につき 1 つのテスト スイートを生成することもできます。 詳細については 「[テスト スイート] タブ」および 「生成オプションのカスタマイズ」を参照してください。

自動生成されたテスト ケースを参照するには、次の操作を行います。

  1. プロジェクト ツリーで、生成されたテスト スイート ファイルを探します。  
    • デフォルトでは、自動生成テスト クラスはテスト対象プロジェクト内の tests/autogenerated ディレクトリに保存されます。
    • テスト スイート ファイルの保存先を確認または変更するには、テストに使用したテスト コンフィギュレーションを開き、[生成] タブの [テスト スイート] タブの [テスト スイート出力ファイルとレイアウト] フィールドを参照します。詳細については 「[テスト スイート] タブ」 を参照してください。
  2. プロジェクト ツリーで、生成されたテスト クラスのノードをダブルクリックします。エディターが開き、テスト クラス ファイルが表示されます。

テスト ケースとは

テスト ケースはテスト スイート中に格納されます。

  • テスト スイート は、テスト ケースのための一種のフレームワークであり、テスト ケースをグループ化するのに役立ちます。各テスト スイートは、CppTest_TestSuite クラスから派生した 1 つのクラス定義、テスト ケースの宣言、およびテスト ケース関数の定義を持ちます。  
    • C++ の関数またはクラス メソッドに対して生成されたテスト スイートは、クラスの形を取り、テスト ケースはこのクラスの public メソッドになります。テストされたメソッドがクラス メンバーである場合、テスト スイート クラスは、テスト対象メソッドが属するクラスへのフレンドになります。テスト ケース内からテスト対象クラスの private メンバーを制御できるため、この関係は非常に強力です。  
    • C コードのテスト スイートは、グローバル関数を宣言するための「コンテナー」(ファイル) としてだけ使用されます。  
  • テスト ケース は、テスト スイート クラスの public メソッド (C++ の場合) またはグローバル関数 ( C の場合) であり、次の 3 つのセクションを持ちます。  
    • 引数と事前条件の代入  
    • テストされる関数呼び出し  
    • 結果と事後条件の検証 C++test は結果を制御して検証するための一連のマクロを定義しています。これらのマクロは、テスト用実行モジュールから C++test GUI にメッセージとアサーションを渡すために使用できます。利用可能なマクロについては 「C/C++test API ドキュメント」 を参照してください。  

テスト対象のファイルに後で関数を追加した場合、更新されたファイルにテスト生成が実行されて、新しいテスト ケースが元のテスト スイート ファイルに追加されます。

コンテキスト マクロとインクルード マクロ

各テスト スイートは、次の 2 つのマクロから開始します。

  • CPPTEST_CONTEXT:  テスト スイートがテストするファイルを指定します。1 つのソース ファイルだけを指定できます。コンテキストの指定がない場合、プロジェクトが実行されるたびにテスト スイートが実行されます。  
    • テストの実行前にプロジェクト ツリーでソース ファイルまたはディレクトリを選択した場合、C++test はテスト コンフィギュレーションの [実行] > [全般] タブの [テスト スイート ファイルの場所のパターン] オプションで指定されたすべてのテスト ディレクトリをスキャンします。指定のコンテキストに一致するすべてのテスト スイートが実行されます。  
    • プロジェクト全体を選択した場合、テスト パス上のすべてのテスト スイートが実行されます。  
    • 1 つのテスト スイートまたは 1 つのテストを選択した場合、CPPTEST_CONTEXT マクロは、このテスト スイートが関連するソース ファイルをバックトレースするために使用されます。選択したテスト スイートだけが実行されます。  
  • CPPTEST_TEST_SUITE_INCLUDED_TO: このテスト スイートがインクルード テスト スイートであることを指定するほか、テスト用実行モジュールをビルドするときにこのテスト スイート ソースをインクルードするファイルを指定します。他のテスト スイート ファイルをインクルードする場合は #include ディレクティブを使用します。  

これらのマクロで指定するファイルは、テスト対象ファイルのファイル名と一致しなければなりません。テスト対象ファイルのファイル名を変更した場合、マクロ側のファイル名も合わせて変更する必要があります。

これらのマクロでは相対パスを使用できます。相対パスは "./" または "../" で開始しなければなりません。

事後条件マクロ

次の事後条件マクロは、テストの実行中に変数またはクラス メンバーが保持した値をレポートするために使用されます。

  • CPPTEST_POST_CONDITION_BOOL(value_string, value)  
  • CPPTEST_POST_CONDITION_INTEGER(value_string, value)  
  • CPPTEST_POST_CONDITION_UINTEGER(value_string, value)  
  • CPPTEST_POST_CONDITION_FLOAT(value_string, value)  
  • CPPTEST_POST_CONDITION_CSTR(value_string, value)  
  • CPPTEST_POST_CONDITION_CSTR_N(value_string, value, max_size)  
  • CPPTEST_POST_CONDITION_MEM_BUFFER(value_string, value, size)  
  • CPPTEST_POST_CONDITION_PTR(value_string, value)  

これらのマクロの結果 ( レポートされたすべてのアサーション値) は [品質タスク] ビューに表示されます。事後条件がレポートされたテスト ケースは、回帰テストで使用するために自動的に「検証済み」にできます。検証済みにすることによって、 *_POST_CONDITION_* マクロはアサーションに変換され、今後のテストで期待値 (検証済みの値) が出力されなかった場合、このアサーションは失敗します。この機能は特に、レガシー コードをベースにした回帰テストを自動生成するのに役立ちます。テスト ケースの検証の詳細については 「回帰テストと例外検出のためのテスト ケースの生成」を参照してください。

その他のマクロ

アサーション マクロは、ユーザーが事後条件を検証したときにテスト ケースに追加されます。

テストのニーズに合わせて他のマクロを追加することも可能です。テスト ケースで使用できるマクロの一覧については 「C/C++test API ドキュメント」を参照してください。

テスト関数

自動生成テスト ケースは、特別な関数を持つことがあります。たとえば、最大値や最小値にアクセスする関数などです。

C++test ランタイム ライブラリには、異なる数値を使ってテスト ケースを生成するために、整数型および浮動小数点型の最大値/最小値を返す関数が用意されています。次の表中のすべての関数はユーザー定義テスト ケースで使用できます。


関数
目的
char cpptestLimitsGetMaxChar(void);
char 型の最大値を返します。
char cpptestLimitsGetMinChar(void);
char 型の最小値を返します。
signed char cpptestLimitsGetMaxSigned Char(void);
signed char 型の最大値を返します。
signed char cpptestLimitsGetMinSigned Char(void);
signed char 型の最小値を返します。
unsigned char cpptestLimitsGetMaxUnsigned Char(void);
unsigned char 型の最大値を返します。
short cpptestLimitsGetMaxShort(void);
short 型の最大値を返します。
short cpptestLimitsGetMinShort(void);
short 型の最小値を返します。
unsigned short cpptestLimitsGetMax UnsignedShort(void);
unsigned short 型の最大値を返します。
int cpptestLimitsGetMaxInt(void);
int 型の最大値を返します。
int cpptestLimitsGetMinInt(void);
int 型の最小値を返します。
unsigned int cpptestLimitsGetMaxUnsigned Int(void);
unsigned int 型の最大値を返します。
long cpptestLimitsGetMaxLong(void);
long 型の最大値を返します。
long cpptestLimitsGetMinLong(void);
long 型の最小値を返します。
unsigned long cpptestLimitsGetMaxUnsigned Long(void);
unsigned long 型の最大値を返します。
float cpptestLimitsGetMaxPosFloat(void);
float 型の正の最大値を返します。
float cpptestLimitsGetMinNegFloat(void);
float 型の負の最小値を返します。
float cpptestLimitsGetMaxNegFloat(void);
float 型の負の最大値を返します。
float cpptestLimitsGetMinPosFloat(void);
float 型の正の最小値を返します。
double cpptestLimitsGetMaxPosDouble(void);
double 型の正の最大値を返します。
double cpptestLimitsGetMinNegDouble(void);
double 型の負の最小値を返します。
double cpptestLimitsGetMaxNegDouble(void);
double 型の負の最大値を返します。
double cpptestLimitsGetMinPosDouble(void);
double 型の正の最小値を返します。
long double cpptestLimitsGetMaxPosLong Double(void);
long double 型の正の最大値を返します。
long double cpptestLimitsGetMinNegLong Double(void);
long double 型の負の最小値を返します。
long double cpptestLimitsGetMaxNegLong Double(void);
long double 型の負の最大値を返します。
long double cpptestLimitsGetMinPosLongDouble(void);
long double 型の正の最小値を返します。


自動生成スタブ

詳細については「自動生成スタブのカスタマイズ」 を参照してください。


  • No labels