テストの実行中、C++test はテスト コンフィギュレーションの実行タブで定義された条件に基づいて、生成されたテストとユーザー定義テストを実行します (または実行時のカバレッジ監視が有効な状態でアプ リケーションを実行します)。
[実行] タブには以下の設定があります。
以下は、テスト対象ソース、追加のソース、およびテスト ケース ソースに対して有効/ 無効にできる [インストゥルメント機能] についての説明 です。
C/C++ コード カバレッジ : カバレッジ情報を追跡するかどうかを指定します。 インクルード ヘッダーのインライン関数のために、テスト ケー ス ソース (スタンドアロン テスト スイート) のカバレッジ情報が必要です。 C++test がカバレッジのためにテスト ケース関数をインストゥルメントすることはありません。
スタック トレースのレポート: スタック トレース コールバックをレポートするかどうかを指定します。オフの場合、レポートされるスタック トレースには、実行された行は表示されず、スタブ化されていない関数呼び出しも表示されません。
private メンバーにアクセス: テスト ケースで private メンバーを使用するかどうかを指定し ます。(たとえば、private 関数の呼び出し、オブジェクトを作成するための private コンストラクターの使用、テスト ケースの事前条件での private フィールドの設定、事後条件での private フィールドの値のチェック)
関数スタブ: セーフ定義スタブ (C++test が提供) およびユーザー定義スタブを単体テストで使用するかどうかを指定します。
main() 関数の名前を変更: main() 関数があるコードをテストするかどうかを指定します。 このオプションがオンの場合、C++test はインストゥルメント時にこの関数の名前を変更します。この処理が必要な理由は、 C++test にはテスト ケースを実行する独自の main() 関数があるからです。このオプションがオフであり、テスト対象のコード 中に main() 関数がある場合、main シンボルの複数定義によるエラーが、テスト用実行モジュールのリンク フェーズで発生します。 [アプリケーション検証] モードで作業する場合、このオプショ ンはオフにするべきです。
メモリ エラー チェック: 実行時エラー検出を有効にしてメモリ関連の問題を検出するかどうかを指定します。
アセンブリ コード カバレッジ: アセンブリ カバレッジ情報を追跡するかどうかを指定します。「アセンブリ コード カバレッジ」を参照してください。
[カバレッジの最適化 (アプリケーション検証のみ)] チェックボックスをオンにして、以下の表で説明する、特別な最適化されたカバレッジ モードを有効にします。
オプション | 説明 |
---|---|
カバレッジ インストゥルメント > サイズの最適化 | できる限り少ない RAM を使用するよう、メトリクス データを格納するためにカバレッジ インストゥルメントによって使用されるメモリ バッファーが最適化されます。このオプションは、メモリが限られる組込みデバイスに適しています。 |
カバレッジ インストゥルメント > スピードの最適化 | 実行時のオーバーヘッドが最小になるよう、メトリクス データを格納するためにコード カバレッジ インストゥルメントによって使用されるメモリ バッファーが最適化されます。このオプションは、実行時オーバーヘッドの増加に弱いアプリケーションでカバ レッジを計測するのに適しています。 |
データ一貫性チェックを有効化する | カバレッジ バッファーの破損を検出するアルゴリズムを有効にします。テスト対象アプリケーションの欠陥のある動作によってカバレッジ バッファーの破損が起こる可能性が高い場合はこのオプションを有効にしてください。なお、このオプションを有効にすると、実行時オーバーヘッドが増加します。 |
カバレッジ メモリ バッファーの初期化を有効化する | コードのカバレッジ インストゥルメントによって使用されるメモリ バッファーを初期化します。プログラムが実行する前に、コンパイラがグローバル変数と静的変数を 0 に初期化しない場合、このオプションを有効にするべきです (変数の初期化は ISO C 規格によって要求されています)。[サイズの最適化] と [データの一貫性チェックを有効化する] が同時に有効である場合、この オプションは自動的に有効になり、ユーザーが無効にすることはできません。 |
列挙データの自動生成を有効化: 列挙型関連 API マクロが必要とする列挙データを収集するかどうかを指定します (詳細は「列挙値の処理」を参照)。
テストを実行するように設定されたテスト コンフィギュレーションを実行すると、一連のアク ションが実行されます。そして通常、C++test GUI に単体テストの結果がロードされます。このアクションはテスト実行フロー ファイルで定義されています。テスト実行フロー ファイルは XML 形式のファイルであり、テスト コンフィギュレーションの一部として保存されます。そのため、チーム メンバー間で共有することができます。 C++test には、ホストベースのテストに特化したデフォルトの実行フローが用意されています。 ユーザーは、独自のテスト実行フローを定義することができます。ユーザー定義のテスト実行フローには、C++test の内部アクションを含めることができるほか、オペレーティング システムでプロセスとして起動される外部ユーティリティも含めることができます。デフォルトのテスト実行フローは、次の方法で変更できます。 • 既存のステップのパラメーターをカスタマイズする。 テスト実行フローのカスタマイズ • 既存のステップを削除する。 • 新しいステップを追加する。 ユーザー定義のテスト実行フローを定義するには、次の操作を行います。 1.[Parasoft] メニューの [テストコンフィギュレーション] をクリックします。 2.テスト実行に使用するテスト コンフィギュレーションを選択します。 3.[実行] タブの [全般] タブをクリックします。 4.[編集] ボタンをクリックします。 5.テスト実行フローを入力するか、既存のフローを変更します。 • 既存のテスト実行フローを利用するには、[利用可能なビルトイン テスト実行フロー] からテスト実行フローを選択して [XML を再現] ボタンをクリックします。そして表示された XML を編集します。 6.[OK] ボタンをクリックしてファイルを保存します。 |
実行の詳細 > クイック実行モード: 「テスト用実行モジュールの副生成物が現行かどうか」、言い換えると、前回の実行から変更されたかどうか通常よりも低い厳密さで検証します。
クイック実行モードを使用すると、テスト用実行モジュールを準備するのにかかる時間を短縮することができます。テスト用実行モジュールの副生成物が現行かどうかの検証が通常より緩やかになるため、テストの準備フェーズがより早くなります。 クイック実行モードでは、次の項目は前回の実行から変更されていないと見なされます。 • コンパイラとリンカーのオプション • ヘッダー ファイル • スタブ構成 次のようにクイック実行モードを利用することを推奨します。 1.「通常の」テスト コンフィギュレーションを複製して「クイック実行モード」用のテストコンフィギュレーションを作成し、[クイック実行モード] チェックボックスをオンにします。 2.2 つのテスト コンフィギュレーションを次のように使用します。 • 夜間テストのためにサーバー マシンでテストを実行する場合、「通常の」テストコンフィギュレーションを使用します。 • 毎日の作業のために開発者のマシンでテストを実行する場合、「クイック実行モード」用のテスト コンフィギュレーションを使用します。 次の状況では、開発者マシンで「通常の」テスト コンフィギュレーションを実行する必要があります。 • プロジェクトのコンパイラ / リンカーのフラグが変更された。たとえば、新しいマクロ定義がコンパイラ オプションに追加された場合や、新しい外部ライブラリがリンカー フラグのリストに追加された場合。 • テスト対象ソース/ テスト スイート ソース/ スタブ ソースによってインクルードされるヘッダー ファイルが変更された。 • 新しいユーザー スタブがプロジェクトに追加された。 • スタブ定義がプロジェクトから削除された。 • カバレッジ データをレポートする必要がある。 「通常の」テスト コンフィギュレーションを使ってテスト用実行モジュールを再ビルドした後、「クイック実行モード」に戻ることができます。 |
${test_ext} - C++test 独自のテスト スイート ファイル拡張子 (.cpp)
• ${project_loc} - Eclipse プロジェクトの場所 (.project ファイルがある場所) へのパス。リンクされたソース フォルダー (実際にはプロジェクトの場所に存在しないソース ファイル) がプロジェクト中にある場合、この変数を使用してはいけません。• ${resource_loc} - 特定のプロジェクト リソースへのパス。たとえば、${resource_loc:/MyProject/linked_src_dir/source.cpp} はC:\src\source.cpp に解決されます。リンクされたソース フォルダー (実際にはプロジェクトの場所に存在しないソース ファイル) がプロジェクト中にある場合、この変数を使用できます。例: リンクされたソース フォルダー (実際にはプロジェクトの場所に存在しないソース ファイル) がプロジェクト中にある場合、この変数を使用してください。
プロジェクト ツリーでテスト スイートが利用可能でなければなりません。
テスト用実行モジュールを準備するときに、(たとえば関数やグローバル変数のための) オリジナル シンボル定義のリストをどのように作成するかを指定します。
${project_loc}
はEclipseプロジェクトの場所(.project
ファイルがある場所) への絶対パスです。リンクされたソース ファイル (プロジェクトと異なる場所にあるソース ファイル) をプロジェクトが利用している場合、この変数を使用することはできません。
${resource_loc}
は、特定のプロジェクト リソースへの絶対パスです。たとえば、${resource_loc:/MyProject/linked_src_dir/source.cpp}
は C:\src\source.cpp
に解決されます。
${project_loc}/src/core/*
このオプションをオンにすると、シンボル/ スタブの解析時に未解決シンボルが検出された場合、C++test は単体テストの実行を中断します。未解決のシンボルを解決する方法については 「未解決シンボルのリンカー エラーの解決」を参照してください。
• コンフィギュレーションを使って直接 Eclipse IDE でデバッグする: Eclipse IDE で、Eclipse デバッグ構成に従って直接デバッガーを使ってテストを実行するかどうかを指定します。このオプションをオンにする場合、使用する Eclipse デバッグ構成も指定する必要があります。
単体テストの実行の詳細をレポート: 実行されたテスト ケースから単体テストの実行の詳細をレポートするかどうかを指定します。これには、CPPTEST_REPORT マクロからレポートされる値も含まれます。
- タスクの詳細を含める: レポートされたタスク (たとえば例外、アサーションの失敗、結果) をテスト ケースの実行の詳細に含めるかどうかを指定します。
- 成功したアサーションの詳細を含める: チェックされたアサーションおよび成功したアサーションをテスト ケースの実行の詳細に含めるかどうかを指定します。