このセクションの内容:
推奨するケース
テスト プロジェクトの使用を推奨するのは次の場合です。
- ルート プロジェクトの下に多くのサブ プロジェクトがある、階層構造を持つプロジェクトをテストする場合。テスト プロジェクトを使用しない場合、ルート プロジェクトに対してテストを実行すると、ルート プロジェクトの直下にあるリソースだけが実行されます。サブ プロジェクトは解析されません (これは標準的な Eclipse のプロジェクト処理方法です)。このような開発環境でテスト プロジェクトを利用すると、テスト プロジェクトはテストされるすべてのリソースのルートとして機能します。
- ビルド ターゲットの定義が外部プロジェクトからのリソースを持っている状況において、Flexible ビルド サポートによってプロジェクトをテストする場合 (ここで外部プロジェクトとは、ビルド ターゲット定義を持つプロジェクトとは別のプロジェクトのことを指します )。テスト プロジェクトを使用しない場合、C++test はテスト ケース コンテキストをファイルに正しく割り当てることができません。
- テスト スコープに含めるヘッダー ファイルを選択したい状況において、Flexible ビルド ターゲット サポートによってプロジェクトをテストする場合。Flexible ビルド ターゲット ツリー ビューではヘッダー ファイルが表示されないため、ヘッダー ファイルを選択するのは不可能です。 しかし、テスト プロジェクトを使用すれば、あらゆる種類のリソースにリンクできるため、ヘッダー ファイルを容易に選択することができます。
また、テスト プロジェクトを使用すると、オリジナルのソース コードとテスト コンポーネント (テスト ケースとスタブ) を分離しやすくなります。
テスト プロジェクトのユーザー インターフェイス
テスト プロジェクトを作成して制御するユーザー インターフェイスは、次のものから構成されます。
[テスト プロジェクトを作成] メニュー コマンド
[テスト プロジェクトを作成] メニュー コマンドは、プロジェクト ナビゲーターのショートカット メニューから利用できます。 Flexible と Standard のどちらのビルド サポートでも、このメニュー コマンドが表示されるのはビルド ターゲットのノードだけです 。他のノードでは表示されません。
複数のビルド ターゲットを選択して 1 つのテスト プロジェクトを作成できますが、同じ種類のビルド ターゲット (Flexible または Standard ビルド サポート) を選択する必要があります。異なる種類のビルド ターゲットを混在させることはできません。
次の図では、Flexible ビルドをサポートするビルド ターゲットを選択して [テスト プロジェクトを作成] メニュー コマンドを表示しています。
次の図では、Standard ビルドをサポートするビルド ターゲットを選択して [テスト プロジェクトを作成] メニュー コマンドを表示しています。
[テスト プロジェクトを作成] をクリックすると、テスト プロジェクトを作成するための C++test のウィザードが表示されます。ウィザードの各ページの操作について以下のセクションで説明します。
テスト プロジェクトを作成する
次の操作を行います。
- プロジェクト名を入力します。
- テスト プロジェクトをワークスペースに格納するのか外部の場所に格納するのかを指定します。
- 適切なコンパイラの種類を選択します。
- コンパイラの実行ファイル名を入力します。
- [次へ] ボタンをクリックします。
C++test は必要な情報をビルドから収集し、[テスト プロジェクトを作成] を実行したときに選択したビルド ターゲットのビルド プロセスを開始します。
ビルド コマンドの前に、コンパイラ/リンカーのフラグを収集してビルド データ ファイルに格納する C++test ユーティリティが呼び出されます。この C++test ユーティリティの詳細については、「既存のビルド システムを使った C++test プロジェクト」を参照してください。
注意
ビルド情報を収集しようとするとき、C++test は選択されたすべてのビルド ターゲットに対するビルド プロセスを開始し、コンパイラ/リンカー/ライブラリアンのコマンドラインの前に、ビルド フラグを記録するための C++test ユーティリティを追加します。結果として、[テスト プロジェクトを作成] の前に、インクルードされるすべてのビルド ターゲットに対して clean を呼び出すことが非常に重要です。または次のように、インクルードされるすべてのプロジェクト (選択されたビルド ターゲットの親) を make コマンドで確実に変更してください。 デフォルトの %makeprefix% make --no-print-directory
を
make %makeprefix% --no-print-directory
に変更します。
make コマンドの変更は、プロジェクトの作成時に行うことも、後で [Project Properties] > [Build Properties] > [Build Support] タブの [Build command] フィールドで行うこともできます。
C++test は任意のパラメーターで %makeprefix% を置き換えます。Workbench のビルドからすべてのビルド オプションを取得するために、C++test は -B パラメーターを使って make を実行する必要があります。C++test による Workbench ビルドの実行では、コンパイラが C++test オプション スキャン ユーティリティによって置き換えられるため、実際のバイナリ ファイルのビルドを伴いません。make の実行に -B パラメーターをアタッチできるようにするには、ビルド コマンドを make %makeprefix% とするのが最も簡便であり、標準的な Workbench ビルドにおいて他の変更を引き起こしません。
ビルド プロセスのスキャン中に収集された情報は、<test_project_name>.bdf という名前のテキスト ファイル中に保存されます。このファイルはローカル ワークスペースでのみ使用することを目的としています。このファイルは絶対パスを使用しているため、ソース管理システムを使って共有するべきではありません。
ビルド データ ファイルからプロジェクトを作成する
ビルド プロセスからスキャンされた情報に基づいて、作成されるテスト プロジェクトのプレビューがウィザード ページに表示されます。ビルド プロセス中にコンパイルされるすべてのソース ファイルは、テスト プロジェクトにリンクされるべきです。
C++test はビルド プロセスでインクルードされたすべてのソース ファイルの親フォルダーをリンクしようとします。このウィザード ページのショートカット メニューから、自動生成テスト プロジェクトの構造を変更することができます。
プロジェクトの内容を設定する
このウィザード ページでは、リンクされたフォルダーの場所を定義するための変数を追加することができます。作成されたテスト プロジェクトを共有したい場合、この変数の追加が必要です。
なお、プロジェクトを別のワークスペースにインポートする場合、変数を定義する必要があります ([ウィンドウ] メニューの [設定] > [一般] > [ワークスペース] > [リンクされたリソース] で定義します)。通常、ワークスペースの場所は変数を使って参照されます。
[テスト プロジェクトをリフレッシュ] メニュー コマンド
プロジェクト ナビゲーターのショートカット メニューから [テスト プロジェクトをリフレッシュ] メニュー コマンドを使用できます。このメニュー コマンドが表示されるのは、テスト プロジェクトのノードだけです。このメニュー コマンドを選択すると、強制的にビルド スキャン プロセスが実行されます。
次の場合にこのメニューを使用します。
- テスト プロジェクトによって参照されているオリジナル プロジェクト中のビルド フラグが変更されるたび。
- テスト プロジェクトがソース管理システムからチェックアウトされたとき。プロジェクトをリフレッシュすると、ローカルにビルド データ ファイルが生成されます (ワークスペースへのパスがチーム全員で常に同じであり、各チーム メンバーのマシンにあるワークスペース リソースで同じであるという条件を満たさない限り、ビルド データ ファイルはソース管理システムに置くべきではありません)。
[テストプロジェクト参照] プロパティ ページ
[テスト プロジェクト参照] プロパティ ページでは、テスト プロジェクトを作成するときに当初含められる一連のビルド ターゲットを変更できます。このページを表示するには、プロジェクト プロパティの [Parasoft] > [C++test] > [テストプロジェクト参照] をクリックします。
テスト プロジェクトによって参照されるビルド ターゲットのリストが表示されます。[テスト プロジェクトをリフレッシュ] メニュー コマンドを選択すると、C++test はこのリストで参照されているすべてのリソースについてビルド フラグ情報を収集しようとします。
- 新しいビルド ターゲットを追加するには、[追加] をクリックし、追加するビルド ターゲットを選択して [OK] をクリックします。
- ターゲットを削除するには、削除するエントリを選択し、[削除] ボタンをクリックします。エントリが削除されます。今後テスト プロジェクトをリフレッシュするとき、このビルド ターゲットのビルド フラグ情報は収集されません。
テスト プロジェクトの管理
テスト プロジェクトの管理では、基になったオリジナル プロジェクトと同期を取る作業が必要です。多くの場合、次の作業が必要です。
- ビルド データ ファイルをリフレッシュして、プロジェクトで変更のあったビルド オプションを反映する
- プロジェクトに追加されたリソースのリンクを追加する
- プロジェクトから削除されたリソースのリンクを削除する
- テスト プロジェクトによって参照されるビルド ターゲットを追加/削除する
テスト プロジェクトをリフレッシュする
テスト プロジェクトによって参照されるプロジェクト中のビルド フラグが変更されるたびに、テスト プロジェクトをリフレッシュして同期を保つべきです。テスト プロジェクトをリフレッシュするには、プロジェクト ナビゲーターでプロジェクトのノードを右クリックし、ショートカット メニューの [C++test] > [テスト プロジェクトをリフレッシュ] をクリックします。 テスト プロジェクトによって参照されるビルド ターゲットが再スキャンされ、ビルド データ ファイルがリフレッシュされます。
リソースのリンクを追加する
テスト プロジェクトを作成するとき、C++test は参照されるビルド ターゲットのビルド中、コンパイルされたソース ファイルがあるすべてのディレクトリにプロジェクトをリンクします。このリンクは一度だけ実行され、プロジェクトの作成後に自動的にリソースのリンクが追加されることはありません。そのため、プロジェクトの作成後に追加したリソースをリンクするには、標準的な Eclipse の機能を使ってユーザーがリンクを追加する必要があります。プロジェクトを選択して [ファイル] メニューの [新規] > [その他] の [ファイル] または [フォルダー] を選択し、[ファイル システム内のファイル/フォルダーにリンク] を有効にしてファイル/フォルダーを指定します。
注意
既存のリソースをコピーするのではなく、リンクされたリソースを使用することを強く推奨します。
参照されるビルド ターゲットから削除されたリソースのリンクを削除する
テスト プロジェクトを作成するとき、C++test は参照されるビルド ターゲットのビルド中、コンパイルされたソース ファイルがあるすべてのディレクトリにプロジェクトをリンクします。このリンクは一度だけ実行され、プロジェクトの作成後に自動的にリソースのリンクが追加されることはありません。そのため、プロジェクトの作成後に削除したリソースのリンクを削除するには、標準的な Eclipse の機能を使ってユーザーがリンクを削除する必要があります。
参照されるビルド ターゲットのリストを変更する
複数のビルド ターゲットからテスト プロジェクトを作成する場合、ビルド ターゲットを追加/削除して、参照されるビルド ターゲット のリストを変更しなければならないことがあります。リストを変更するには、プロジェクト ナビゲーターでプロジェクトのノードを右クリックし、[プロパティ] の [C++test] > [テストプロジェクト参照] をクリックします。次回プロジェクトをリフレッシュしたときに、変更が反映されます。
ビルド仕様の変更
1 つのプロジェクトについて Wind River Workbench プロジェクトの複数のビルド仕様を利用することは、よく行われています。その場合、プロジェクトのアクティブなビルド仕様を変更したときに、プロジェクトをリフレッシュするだけで、新しいコンパイラ/リンカー フラグを取得することができます。ビルド仕様ごとに個別にテスト プロジェクトを作成する必要はありません。