このセクションでは、C++test 6.x のテスト資産を C++test 10.x に移行する方法について説明し ます。

このセクションの内容

テスト コンフィギュレーション

C++test 6.x からテスト コンフィギュレーションをインポートするには、次の操作を行います。

  1. (推奨) C++test 6.x のテスト コンフィギュレーションのユーザー定義ルールに C++test 10.x からアクセスできること ( つまり Team Server で共有していること) を確認します。
  2. [Parasoft] メニューの [ テスト コンフィギュレーション] をクリックします。
  3. [ユーザー定義] カテゴリを右クリックし、ショートカット メニューの [C++test 6.x テス ト コンフィギュレーションのインポート] をクリックします。ファイル選択用ダイアログで適切な C++test 6.x テスト コンフィギュレーション ファイル (.tcfg ファイル) を選択します。

C++test 6.x のテスト コンフィギュレーションと同じ名前でユーザー定義テスト コンフィギュレー ションが作成されます。次のデータが C++test 6.x のテスト コンフィギュレーションからインポー トされます。

その他のすべてのパラメーターはデフォルトに設定されます。
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 テスト ユニットのテスト スイートを個別のディレクトリにインポートするのかを指定します。そして、表示されたテキストを変更してテスト スイートの保存先を指定します。次の変数を使用できます。



     4. 必要に応じて次のオプションを変更します。


テスト スイートまたはテスト スイート ファイルの名前が自動的に変更される場合、適切な情報がインポートされるテスト スイート ファイルに追加されます。
例:

// Test suite was renamed by C++test - original name: TestSuite_XX // File was renamed by C++test - original file: TestSuite_XX.cpp

名前の変更についての情報は C++test コンソールにも表示されます。
例:

Importing test suite "TestSuite_XX" ... ...warning, test suite "TestSuite_XX" already exists in the project. Test suite renamed to "TestSuite_XX_1".

     5. [ 終了] をクリックします。


テスト ケースのインポート中、進行状況が [ コンソール] ビューに表示されます。進行状況の情報には、インポートされたテスト スイート、インポート中に発生した問題、およびインポートのサマリが含まれます。
インポート プロセスの最中、C++test は __CPTR_Construct_Argument を使って古いコンストラクターのテスト ケースをチェックします。発見された古いコンストラクターの呼び出しは、デフォルトのコンストラクター呼び出しに変更されます。テスト ケースには適切な情報が保持され、元のコードはコメント アウトされます。警告メッセージが C++test コンソールに表示されます。インポートされたテスト スイート ファイルは、ユーザーがレビューするべきです。必要に応じて、異なるコンストラクターを使用するようにテスト ケースを変更してください。


ネイティブ テスト

適切なライセンス機能を有効にしている場合、C++test 2.3 / 6.x のネイティブ テストをインポートすることができます。ネイティブ テストに関連するすべての設定項目を有効にするには、このライセンスが必要です ( たとえば、テスト ケース エクスプローラーの [ 新規追加] > [ ネイ
ティブ テスト] ショートカット メニュー、テスト コンフィギュレーションのオプション、C++test プロジェクト プロパティにおけるネイティブ テスト プロジェクト構成などです)。

C++test 6.x から C++test 10.x にネイティブ テストをインポートするには、次の操作を行います。

  1. C++test 6.x でテストされたすべてのソース ファイルを含むプロジェクトを新規作成します。詳細については「プロジェクトの作成」 を参照してください。
  2. プロジェクトを適切に構成します。詳細については「プロジェクトとファイルのオプション設定」 を参照してください。
  3. 次の操作を行ってネイティブ テストをインポートします。
    1. [Parasoft] メニューの [ビューの表示] > [テスト ケース エクスプローラー] をクリックしてテスト ケース エクスプローラーを表示します。
    2. テストに追加するプロジェクトを右クリックし、ショートカット メニューの [新規追加] > [ネイティブ テスト] をクリックします。
    3. 表示されたファイル選択用ダイアログで、ネイティブ テストを格納した C++test6.x プロジェクト ファイル (.cpf ファイル) を選択し、[開く] ボタンをクリックします。

既存のネイティブ テストが [テスト ケース エクスプローラー] ビューに自動的に追加されます。ネイティブ テストは次の階層で表示されます。

[NewProject]
[Native Tests (OldProject.cpf)]
  [File1.cpp]
    [Class1]
      [Function1]
        [TestCase1]
        [TestCase2]

テストの更新

新しいテスト ケースは、C++test 10.x の機能を使って追加するべきです。ネイティブ テスト ケースを変更する必要がある場合、C++test 6.x で変更してから、テスト ケース エクスプローラーをリフレッシュして同期を取ることができます。

テストの実行

現行バージョンの C++test でネイティブ テストを実行するには、次の操作を行います。

  1. 適切なテスト コンフィギュレーションを作成します。次の操作を行います。
    1. [Parasoft] メニューの [テスト コンフィギュレーション] をクリックします。
    2. [ユーザー定義] ノードを右クリックし、ショートカット メニューの [インポート]をクリックします。
    3. <INSTALL_DIR>/configs/NativeTests の下にあるテスト コンフィギュレーションを選択して [開く] ボタンをクリックします。
    4. C++test 2.3/6.x のインストール ディレクトリを指すよう'CPPTEST_INSTALL_DIR' 環境変数を設定します。
      • たとえば、bash シェルで次のコマンドを使用したり、export CPPTEST_INSTALL_DIR=.... あるいは Windows の場合、[ コントロール パネル] > [ システム] > [ 詳細設定] の [ 環境変数] ボタンをクリックし、システム環境変数を設定します。
    5. テスト コンフィギュレーションの [ 実行] > [ 全般] タブで [ 実行コマンド]フィールドのコマンドライン パラメーターを検証し、必要に応じて修正します。

ネイティブ テストを実行するようテスト コンフィギュレーションを構成するには、次の操作を行います。

  • [実行] タブで [ テスト実行を有効にする] チェックボックスをオンにします。
  • [実行] > [ 全般] タブで [ レガシー ネイティブ テスト ケースを実行] チェックボックスをオンにします。
  • [実行コマンド] フィールドで、C++test 2.3/6.x 実行モジュールへの適切なパスを指定します。

     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 つのディレクトリに配置されます。
ファイル スコープ テスト モードで適切なスタブがテストで必ず使用されるようにするには、次の操作を行います。

  1. [Run Unit Tests (File Scope)] テスト コンフィギュレーションをベースにしたユーザー定義テスト コンフィギュレーションを作成します。
  2. [ 実行] > [ シンボル] タブの [ プロジェクト内の他のファイルのシンボルを使用]フィールドで、コンテキスト固有のスタブだけを使用するよう指定します。
    例:
    ${project_loc}/stubs/imported/${ctx_name}

このように指定すると、ファイル スコープ モードで 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 ディレクティブを自動的にコピーします。

コマンドライン (cpptestcli) からの実行

C++test 6.x と C++test 10.x のコマンドラインの違いは次の表のとおりです。表中の「 x 」は、対応するコマンドがないことを表します。


C++test 6.xC++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, --Zforcex
-Zow {on\off}, --Zoverwrite {on\off}x
-Zoe [quiet], --Zonly_errors [quiet]x
-Zq, --Zquietx
-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_sourcex
-Zrs, --Zreread_symbolsx
-Zlc (param), --Zlist_config (param)x
-Zecf, --Zexpand_command_filesx
-Znt --Zno_testsx
-h, --help-help
-V, --version-version
x-nobuild
x-showdetails
x-appconsole stdout