このセクションでは、「Wind River Tornado コンパイラを使ってコンパイル/ビルドされるコード」および「Wind River Tornado IDE を利用して作成されるコード」に対して単体テストを実行する方法について説明します。
このセクションの内容
「単体テスト」という用語には、テスト オブジェクトのビルドと実行に関連するあらゆることが含まれます。単体テストを実行する前に、C++test の次の用語/機能に慣れておくと役立ちます。
VxWorks テスト オブジェクト/再配置可能テストは -r オプションを使ってリンクされるため、シンボル (関数/変数) 定義の存在はチェックされません。そのため、シンボルの解決エラーはリンク時にレポートされません。結果として、ユーザーは実行フェーズでテスト オブジェクトがクラッシュするときまで、シンボルの定義を忘れたのか、あるいはシンボルのインクルードを妨げるようなスコープの間違いがあったのかを知ることができません。このような問題について早い段階で警告を受け取るには、テスト コンフィギュレーションの [実行] > [シンボル] タブで [未解決シンボルが検出された場合は実行を中断する] オプションを有効にして、「外部シンボル リストの作成」で説明されているとおり、生成される外部 VxWorks イメージ シンボルを使用するように設定する必要があります。
単体テストを正常に実行するには、すべてのプロジェクト設定を適切に行う必要があります。プロジェクト設定の詳細については 「ターゲット/プラットフォーム依存のオプションの設定」を参照してください。
以降のセクションでは、C/C++test ランタイム ライブラリをビルドする方法 (よりきめ細かく制御するためにカスタマイズして手動でビルドする場合)、VxWorks イメージから外部シンボル リストを生成する方法、テスト オブジェクトを実行するために必要な Tornado ツール、Tornado テストのためのビルトイン テスト コンフィギュレーション、および組込みテストの状況に合わせてテスト オブジェクトを調整できるテスト実行フローのカスタマイズ方法について説明します。
単体テストの詳細については 「テストの作成と実行」を参照してください。
ランタイム ライブラリについては「C/C++test ランタイム ライブラリのビルド」を参照してください。
Tornado ツールを使って VxWorks OS のためのランタイム ライブラリをビルドするには、次の操作を行います。なお、この操作は必要な Tornado 環境変数を正しく設定済みであることを前提とします。詳細については 「要件」 を参照してください。
<CPPTEST_INSTALL_DIR>/bin/engine/runtime
に移動します。次のコマンドを入力します。 make TARGET_CFG:=
後ろには Tornado/VxWorks のバージョンに応じて次のいずれかを指定します。 WR_egcs_simnt_VxWorks5_4.mk
または WR_gcc2_9_simnt_VxWorks5_5
次の変数をコマンドラインで使用することもできます。
C++test で提供されている Tornado プロジェクトまたはワークスペースからランライム ライブラリをビルドするには、次の操作を行います。
<CPPTEST_INSTALL_DIR>/bin/engine/runtime/
projects
に移動します。Tornado2_0
または Tornado2_2
を選択します。<CPPTEST_INSTALL_DIR>/bin/engine/runtime
/target
にある .mk ターゲット コンフィギュレーションをコピーまたは編集して、TARGET_CFG 引数に指定することができます。Tornado に別のビルド ターゲットを追加して、ビルド オプションやターゲットを変更できます。
外部シンボル リストは、 [未解決シンボルが検出された場合は実行を中断する] オプションが有効になっているテスト コンフィギュレーションを使って VxWorks テスト オブジェクトをビルドするために必要です。Tornado 関連のビルトイン テスト コンフィギュレーションでは [未解決シンボルが検出された場合は実行を中断する] オプションが有効になっています。外部シンボル リストは、アプリケーションの実行に使用する VxWorks カーネル イメージで定義されたすべてのシンボルを含むべきです。
次の操作を行って VxWorks イメージ シンボル リストを生成できます。
%WIND_BASE%\target\config\simpc\vxWorks
"外部シンボル リストの詳細については、「外部シンボル リストの作成」を参照してください。
ここで言う「テスト オブジェクト」とは、ソース ファイルとテスト スイートから生成される最終的な成果物を指し、これは、テスト ケースの結果やカバレッジ データといった実行時データを収集するために実行する必要があります。本ユーザーズ ガイドの別のセクションでは、「テスト オブジェクト」の代わりに「テスト用実行モジュール」という用語を使用しています。組込み開発のセクションで異なる用語を使う理由は、組込みシステムは必ずしも「実行モジュール」をサポートしないからです。この「実行モジュール」とはすなわち、アプリケーション イメージと呼ぶことができるバイナリ ファイルであり、システム自体がロード (アンパック) して実行できるバイナリ ファイルです。たとえば VxWorks 5.4 および VxWorks 5.5 の場合、アプリケーションのプロシージャにリンクする完全なシステム イメージをビルドできるほか、アプリケーションのシンボルだけを含み、後でビルド済みのシステム イメージにリンクされる、不完全な再配置可能オブジェクトをビルドできます。
Tornado による VxWorks のテストの場合、C/C++test は、最も良く表現するとして「再配置可能テスト」と呼ぶことができる 2 番目のタイプのオブジェクトをビルドして、Tornado Shell (windsh) というオリジナルの Tornado ツールを使って実行しようとします。実行時テストを開始する前に、Tornado Registry (wtxregd) および Target Server (tgtsvr) が起動していてターゲットの実行中の VxWorks に接続している必要があります ( 「要件」を参照)。
たとえば、 VxWorks シミュレーターでのテストのためにテスト環境を準備するには、 次の操作を行います。この操作説明は、「要件」にあるように、必要な Tornado 環境変数が正しく設定済みであることを前提とします。オリジナルの Tornado インターフェイスを使用するか、次の例に示す手順およびコマンドを実行します。
wtxregd & '
VxSim を起動します。"%WIND_BASE%\target\config\simpc\vxWorks" &
ターゲット サーバーを起動します。tgtsvr vxsim -B wdbpipe -R "C:\Temp" -RW &
デフォルトの Tornado に付属の VxSim は、 Pass Through File System (PassFS) および Target Server File System (TSFS) のサポートが構成済みです。このサポートおよび上記の設定によって、テスト オブジェクトはデフォルトのランタイム ライブラリにファイル通信でリンクすることができ、いずれかのファイル システムを使って結果を転送できます。 (ランタイム ライブラリについては 「ランタイム ライブラリのビルド」を参照してください。)
Tornado ツールおよび VxWorks の詳細については、Tornado のマニュアルを参照してください。
Tornado プロジェクトのテストに特化したテスト コンフィギュレーションとして、[ビルトイン] > [Embedded Systems] > [Wind River] > [Tornado] の下に次のテスト コンフィギュレーションが用意されています。
これらはすべて [ビルトイン] > [Embedded Systems] > [Wind River] > [Tornado] カテゴリにあります。
これらのテスト コンフィギュレーションは、特別に設計された次のテスト実行フローをベースにしています ( 「テスト実行フローによるテスト コンフィギュレーションのカスタマイズ」を参照してください)。
(WRTornadoBuildVxWorksPassFS.recipe)
(WRTornadoBuildVxWorksSocket.recipe)
(WRTornadoBuildVxWorksTSFS.recipe)
(WRTornadoLoadAndRun.recipe)
(WRTornadoLoadAndRunSocket.recipe)
(WRTornadoVxWorksPassFSFull.recipe)
(WRTornadoVxWorksPassFSApp.recipe)
上記のテスト コンフィギュレーションおよびテスト フローで使用される用語について簡単に説明します。
その他、必要となる可能性のあるビルトイン コンフィギュレーションは次のとおりです。
ニーズに合わせてカスタマイズした VxWorks/VxSim のバージョンをビルドする必要がある場合があります。手順については Tornado のマニュアルを参照してください。
テスト コンフィギュレーションの詳細については、「テストコンフィギュレーションとルールの設定」を参照してください。
組込み開発者にとって、単体テスト プロセスの流れを知ること、そしてソース コードに C/C++test が適用する一連のツールを知ることは重要です。期待どおりに動作する堅牢なプロセスを構築するには、そのような知識が欠かせません。
テスト実行フローの多くの部分は、環境が異なっても同じであり、ほとんどの場合、フロー ステップの順序とパラメーターは変更するべきではありません。ただし特定の状況では、一部の重要なフロー ステップを調整する必要があります。テスト コンフィギュレーション マネージャーのエディターで、テスト実行フロー パラメーターをニーズに合わせて変更できます。ビルトイン テスト コンフィギュレーションでは、重要でよく変更されるフロー プロパティを簡単に変更できるため、通常はカスタム実行フローを作成する必要はありません。テスト実行フローのパラメーターは必要に応じてカスタマイズすることができます。テスト コンフィギュレーションの [実行] > [全般] の [実行の詳細] でカスタマイズします。
テスト実行フローのカスタマイズ方法については 「テスト実行フローのカスタマイズ」を参照してください。
より高度なカスタマイズが必要になることがまれにあります。テスト フローをカスタマイズする必要がある場合、以下のヒントを参考にしてください。
C/C++test はこの環境での直接的なテスト ケース デバッグをサポートしていません。
hostShell を使ってターゲット カーネルにテスト用実行モジュールをロードし、目的のテスト ケースに手動でブレークポイントを設定してください。