このセクションでは、C++test 6.x のテスト資産を C++test 10.x に移行する方法について説明し ます。
このセクションの内容
C++test 6.x からテスト コンフィギュレーションをインポートするには、次の操作を行います。
C++test 6.x のテスト コンフィギュレーションと同じ名前でユーザー定義テスト コンフィギュレー ションが作成されます。次のデータが C++test 6.x のテスト コンフィギュレーションからインポー トされます。
<rule_category>-<rule_unique_id>
(myrule-123, user-456
) のように、ハイフ ン "-" を使ってルール カテゴリとルール ID を区切ることを推奨します。そうすると、 C++test はルール カテゴリに基づいて自動的にルール ツリー構造を作成します。その他のすべてのパラメーターはデフォルトに設定されます。
C++test 6.x テスト コンフィギュレーションで有効だったルールに C++test 10.x がアクセスできない場合、警告メッセージが表示されます。
UNKNOWN カテゴリに追加されたルールは、ルール マッピングを使ってカテゴリを変更できます。詳細については「ルール カテゴリ、ID、ヘッダー、重要度レベルの変更」を参照し
てください。
Team Server に格納されたテスト コンフィギュレーションを移行するには、 User フォルダーにインポートしてから、 C++test 10.x 形式で Team Server に再度アップロードします。
C++test 6.x から「ソース テスト」のテスト スイートをインポートする方法は 2 つあります。すべてのテスト スイートを 1 つのディレクトリにインポートする方法と、各 C++test 6.x テスト ユニットのテスト スイートを個別のサブ ディレクトリにインポートする方法です。
テスト スイートをインポートする前に、次の点に注意してください。
C++test 6.x プロジェクトからテスト スイートをインポートするには、次の操作を行います。
1. ショートカットメニューの [Parasoft] > [ ウィザード] > [C++test 6.x テストスイートをインポート] をクリックします。ウィザードが表示されます。
2. [C++test 6.x プロジェクト ファイル] フィールドで 、C++test 6.x プロジェクト ファイルの場所を指定します。プロジェクト ファイルの拡張子は .cpf でなければなりません。
3. [インポートされるテスト スイートの場所] ドロップ ダウン リストから、すべてのテストスイートを 1 つのディレクトリにインポートするのか、それとも各 C++test 6.x テスト ユニットのテスト スイートを個別のディレクトリにインポートするのかを指定します。そして、表示されたテキストを変更してテスト スイートの保存先を指定します。次の変数を使用できます。
${src_file_name}
- コンテキスト ファイルの名前。「コンテキスト ファイル」とは、 テスト対象関数が定義されているコンパイル単位を表すソースのことです。${src_file_base_name}
- Nコンテキスト ファイルの名前 ( 拡張子なし)。${src_file_ext}
- コンテキスト ファイルの拡張子。${src_file_loc_rel}
- コンテキスト ファイルの場所 ( プロジェクトからの相対)${src_file_uid}
- コンテキスト ファイルの一意な識別子${unit_name}
- インポートするテスト スイートの C++test 6.x テスト ユニット
4. 必要に応じて次のオプションを変更します。
テスト スイートまたはテスト スイート ファイルの名前が自動的に変更される場合、適切な情報がインポートされるテスト スイート ファイルに追加されます。
名前の変更についての情報は C++test コンソールにも表示されます。
|
5. [ 終了] をクリックします。
テスト ケースのインポート中、進行状況が [ コンソール] ビューに表示されます。進行状況の情報には、インポートされたテスト スイート、インポート中に発生した問題、およびインポートのサマリが含まれます。
インポート プロセスの最中、C++test は __CPTR_Construct_Argument を使って古いコンストラクターのテスト ケースをチェックします。発見された古いコンストラクターの呼び出しは、デフォルトのコンストラクター呼び出しに変更されます。テスト ケースには適切な情報が保持され、元のコードはコメント アウトされます。警告メッセージが C++test コンソールに表示されます。インポートされたテスト スイート ファイルは、ユーザーがレビューするべきです。必要に応じて、異なるコンストラクターを使用するようにテスト ケースを変更してください。
適切なライセンス機能を有効にしている場合、C++test 2.3 / 6.x のネイティブ テストをインポートすることができます。ネイティブ テストに関連するすべての設定項目を有効にするには、このライセンスが必要です ( たとえば、テスト ケース エクスプローラーの [ 新規追加] > [ ネイ |
C++test 6.x から C++test 10.x にネイティブ テストをインポートするには、次の操作を行います。
既存のネイティブ テストが [テスト ケース エクスプローラー] ビューに自動的に追加されます。ネイティブ テストは次の階層で表示されます。
[NewProject]
[Native Tests (OldProject.cpf)]
[File1.cpp]
[Class1]
[Function1]
[TestCase1]
[TestCase2]
新しいテスト ケースは、C++test 10.x の機能を使って追加するべきです。ネイティブ テスト ケースを変更する必要がある場合、C++test 6.x で変更してから、テスト ケース エクスプローラーをリフレッシュして同期を取ることができます。
現行バージョンの C++test でネイティブ テストを実行するには、次の操作を行います。
<INSTALL_DIR>/configs/NativeTests
の下にあるテスト コンフィギュレーションを選択して [開く] ボタンをクリックします。'CPPTEST_INSTALL_DIR'
環境変数を設定します。CPPTEST_INSTALL_DIR=....
あるいは Windows の場合、[ コントロール パネル] > [ システム] > [ 詳細設定] の [ 環境変数] ボタンをクリックし、システム環境変数を設定します。ネイティブ テストを実行するようテスト コンフィギュレーションを構成するには、次の操作を行います。
|
2. テスト ケース エクスプローラーで、実行するテストを選択します。
3. ネイティブ テストを実行するために作成したテスト コンフィギュレーションを実行します。
注意:
ネイティブ テストの実行結果は、ソース テストと同じように表示されます。
また、次の操作も行うことができます。
C++test 6.x からユーザー スタブをインポートする方法は 2 つあります。すべてのユーザー スタブを 1 つのファイルにインポートする方法と、各 C++test 6.x テスト ユニットのユーザー スタブを個別のファイルにインポートする方法です。
C++test 6.x プロジェクトからユーザー スタブをインポートするには、次の操作を行います。
1. [Parasoft] メニューの [ ウィザード] > [C++test 6.x ユーザースタブのインポート] をクリックします。
ウィザードが表示されます。
2.[C++test 6.x プロジェクト ファイル] フィールドで 、C++test 6.x プロジェクト ファイルの場所を指定します。プロジェクト ファイルの拡張子は .cpf でなければなりません。
3.
[ インポートされるスタブの場所] ドロップダウン リストからオプションを選択します。すべてのスタブを 1 つのディレクトリにインポートするのか、指定の C++test 10.x テスト コンテキストのすべてのスタブを個別のサブディレクトリにインポートするのか、それとも指定の C++test 6.x テスト ユニットのすべてのスタブを個別のディレクトリにインポートするのかを選択します 。
ファイル スコープ モードで C++test 6.x の動作を C++test 10.x で再現する場合、[C++test9.x テスト コンテキストのすべてのスタブを個別のサブディレクトリにインポートする] オプションが特に有効なことがあります。このオプションを使ってスタブをインポートすると、特定の C++test 9.x テスト コンテキストのすべてのスタブが 1 つのディレクトリに配置されます。
このように指定すると、ファイル スコープ モードで foo.cpp ファイルをテストする場合、foo.cpp サブディレクトリにインポートされたスタブだけが使用されます。 |
4. [ 重複するスタブのインポート ストラテジ] で、1 つの関数に対する複数のスタブのインポート方法を選択します。たとえば、ある関数のスタブが複数の C++test 6.x テスト ユニットのコンテキストで定義されている場合などです。次のオプションを選択できます。
5. 適切なテスト コンテキストでスタブが必ず使用されるようインポートされるテスト定義を変更するには、[ スタブ定義と C++test 9.x のテスト コンテキストを接続するコードを挿入する] チェックボックスをオンにします。
例:
// [...]
if (CppTest_IsCurrentContext("Examples/ATM/Source Files/Account.cxx")) {
// [...]
このオプションは、[ 重複するスタブをマージする] を選択している場合に特に役立ちます。1 つのテスト定義が作成されます。このスタブ定義は、C++test 6.x スタブの動作に対応するテスト コンテキストごとに異なった動作を行います。
double (::Account::CppTest_Stub_getBalance) () { if (CppTest_IsCurrentContext("/ATM/ATM/Account.cxx")) { //account } else if (CppTest_IsCurrentContext("/ATM/ATM/ATM.cxx")) { //atm } else { return getBalance(); } } |
6.インポートされる各スタブ ファイルの先頭に特定のテキストを追加するには、[ 各スタブファイルの先頭にカスタム コードを挿入する] チェックボックスをオンにします。たとえば、インポートされるすべてのスタブ ファイルに、必要なヘッダー ファイルの #include ディレクティブを追加することができます。
7. 重複するスタブをコメント アウトするには、[ 重複するスタブをコメント アウトする] チェックボックスをオンにします。
8. [ 終了] をクリックします。
スタブのインポート中、進行状況が [ コンソール] ビューに表示されます。進行状況の情報には、インポートされたスタブ、インポート中に発生した問題、およびインポートのサマリが含まれます。
C++test は、オリジナル ソース ファイル (C++test 6.x プロジェクトでスタブが作成されたファイル) から、インポートされるスタブ ファイルに #include ディレクティブを自動的にコピーします。
C++test 6.x と C++test 10.x のコマンドラインの違いは次の表のとおりです。表中の「 x 」は、対応するコマンドがないことを表します。
C++test 6.x | C++test 10.x |
---|---|
-Zicpf (file), --Zinput_cpf_project (file) | -data (WORKSPACE_DIR) |
-Zocpf (file), --Zoutput_cpf_project (file) | x |
-Zdsp (file), --Zdsp_project (file) | x |
-Zvcproj (file), --Zvcproj_project (file) | x |
-Zdc (name), --Zdsp_config (name) | x |
-Zdc (name), --Zdsp_config (name) | x |
-Zmcl (param), --Zmake_command_line (param) | x |
-Ztf (name), --Ztest_file (name) | -resource (RESOURCE) |
-Zeh (name), --Zexport_harness (name) | x |
-Zrl (name), --Zread_logs (name) | x |
-Ztc (name), --Ztest_config (name) | -config (CONFIG_URL) |
-Zpc (name), --Zproject_config (name) | x |
-Zso (file), --Zsave_options (file) | x |
-Zitc (file), --Zimport_test_cases (file) | x |
-Zito (file), --Zimport_test_objects (file) | x |
-Zis (file), --Zimport_suppressions (file) | x |
-Zrf (file), --Zreport_file (file) | -report (REPORT_FILE) |
-Zgh (name), --Zgenerate_html (name) | -report (REPORT_FILE) |
-Zhrd (dir), --Zhtml_report_directory (dir) | -report (REPORT_FILE) |
-Zgx, --Zgenerate_xml | -report (REPORT_FILE) |
-Zxrd (dir), --Zxml_report_directory (dir) | -report (REPORT_FILE) |
-Zpr, --Zpublish_results | -publish, -publishteamserver |
-Zf, --Zforce | x |
-Zow {on\off}, --Zoverwrite {on\off} | x |
-Zoe [quiet], --Zonly_errors [quiet] | x |
-Zq, --Zquiet | x |
-Zvm(level), --Zverbosity_mode(level) | x |
-Zgrs {on\off}, --Zgrs {on\off} | -localsettings (LOCALSETTINGS_FILE) |
-Zga (name), --Zgrs_attribute (name) | -localsettings (LOCALSETTINGS_FILE) |
-Zcs, --Zcompile_source | x |
-Zrs, --Zreread_symbols | x |
-Zlc (param), --Zlist_config (param) | x |
-Zecf, --Zexpand_command_files | x |
-Znt --Zno_tests | x |
-h, --help | -help |
-V, --version | -version |
x | -nobuild |
x | -showdetails |
x | -appconsole stdout |