このセクションではC/C++ ツールチェーンまたは Docker コンテナーによって提供されるテスト環境を使用して解析やテストを実行する方法を説明します。
このセクションの内容
はじめに
C/C++test は Docker コンテナーでの解析およびテストの実行をサポートしています。このシナリオでは、テスト環境または C/C++ ツールチェーンを含むコンテナーで解析およびテストを実行するようローカル マシンにホストされた C/C++test を構成します。
C/C++test の Docker 統合は次のコンポーネントで構成されます。
[INSTALL_DIR]/integration/docker
にある Docker コンテナーでのリモート プロセス実行用スクリプト:
-remote-gcc
– gcc コマンド ラッパー
-remote-g++
– g++ コマンド ラッパー
-remote-exec
– 汎用コマンド ラッパーbuiltin://Run Unit Tests in Container
– Docker コンテナー内で単体テストを実行するためのテスト コンフィギュレーション
要件
- Linux 64-bit (ホスト)
- C/C++test Professional for Linux 64-bit (ホストにインストール)
- C/C++test で解析およびテストを実行するためのツールチェーンとテスト実行環境を含む Dockerコンテナー イメージ
コンテナーの設定と開始
C/C++test と Docker コンテナー間の通信を可能にするには、ホスト上の C/C++test でテストしたいプロジェクトに関連するすべてのディレクトリにコンテナーがアクセスできること、またC/C++test が識別子または名前でコンテナーを識別できることを確認してください。
- 以下のフォルダーをコンテナーにマウントします。
- Eclipse ワークスペースの場所
- Eclipse プロジェクトの場所- プロジェクトが Eclipse プロジェクトまたはワークスペースの外にある場合
- Eclipse プロジェクトまたはワークスペースの外にあるすべてのソース ファイルの場所
- C/C++test がインストールされた場所 - 単体テストを実施する場合にのみ、コンテナーから C/C++test ランライム ライブラリにアクセスできるようにするために必要
2.
CPPTEST_CONTAINER_NAME
環境変数にコンテナーの ID またはコンテナ名を設定します。利用しやすいよう、コンテナーに読みやすく意味のある名前を付けることを推奨します。
例
次のサンプルは、プロジェクトとすべてのソース ファイルが Eclipse ワークスペース (/home/devel/workspace
) にあり、C/C++test が /opt/parasoft/cpptest
にインストールされていると仮定します。--name
オプションで指定されたコンテナー名 "gcc9-test-container" は、コンテナー イメージに GCC 9 コンパイラが含まれていることを示します。
docker run --rm -it -d -v /opt/parasoft/cpptest:/opt/parasoft/cpptest -v /home/devel/workspace:/home/devel/workspace --name gcc9-test-container gcc:9
環境変数にコンテナー名を設定します。
export CPPTEST_CONTAINER_NAME=gcc9-test-container
コンテナーでの解析およびテストの実行を設定
単体テスト用のカスタム コンパイラ設定を作成する
Docker コンテナーでテストを実行するには、カスタムコンパイラ設定を作成し、C/C++test のランタイム ライブラリをコンテナー内でビルドできるようにする必要があります。
- Docker のコンパイラに対応するコンパイラ設定を複製します (カスタム コンパイラ設定の作成の詳細については「カスタム コンパイラを使用するテストの設定」を参照)。
-
<CUSTOM_COMPILER_CONFIG>/gui.properties
ファイルを変更して次のオプションを設定または削除します。
-autoBuildRuntimeLib=true
を設定
-linkerCmdLine
から-lcpptestruntime64
を削除
静的コード解析だけを実行する場合は、カスタム コンパイラ設定の作成をスキップできます。
コンテナーでのテスト用にプロジェクトをセットアップする
プロジェクト プロパティを変更してプロジェクトのリモート ツールチェーンを設定する必要があります。
- IDE でプロジェクト プロパティを開きます。
- [Parasoft] > [C/C++test] > [ビルド設定] > [コンパイラ設定] に移動します。
- コンパイラ設定に対応したコンパイラ種類を選択します。「単体テスト用のカスタム コンパイラ設定を作成する」を参照してください。
- デフォルトの C/C++ コンパイラおよびリンカー コマンドをラッパー スクリプトに置き換えます。
- C コンパイラ:<CPPTEST_INSTALL_DIR>/integration/docker/remote-gcc
- C++ コンパイラ:<CPPTEST_INSTALL_DIR>/integration/docker/remote-g++
- リンカー:<CPPTEST_INSTALL_DIR>/integration/docker/remote-g++
あるいは、<CPPTEST_INSTALL_DIR>/integration/docker
からスクリプトをプロジェクトにコピーし、プロジェクトへの相対パスを指定することもできます。そうすると、設定をソース管理システムに保存し、チームで共有できます。例:
- C compiler:${project_loc}/docker/remote-gcc
- C++ コンパイラ:${project_loc}/docker/remote-g++
- リンカー:${project_loc}/docker/remote-g++
コンテナーで静的解析を実行する
静的解析を実行する前に、Docker コンテナーが実行されていることを確認します (「コンテナーの設定と開始」を参照)。それ以外の手順は必要ありません。
任意のテスト コンフィギュレーションを使用してコードを解析できます。解析時、C/C++test はプロジェクト プロパティで指定したラッパー スクリプトを経由してアクセスした Docker の C/C++ コンパイラを使用します (「コンテナーでのテスト用にプロジェクトをセットアップする」を参照)。
コンテナーで単体テストを作成および実行する
単体テストの生成
C/C++test で単体テストを作成する前に、Docker コンテナーが実行されていることを確認します (「コンテナーの設定と開始」を参照)。それ以外の手順は必要ありません。
単体テストを生成するテスト コンフィギュレーション (たとえば builtin://Generate Unit Tests
など) を使用できます。テスト生成時、C/C++test はプロジェクト プロパティで指定したラッパー スクリプトを経由してアクセスした Docker の C/C++ コンパイラを使用します (「コンテナーでのテスト用にプロジェクトをセットアップする」を参照)。
テスト ケースの実行
- C/C++test で単体テストを実行する前に、Docker コンテナーが実行されていることを確認します (「コンテナーの設定と開始」を参照)。
- (オプション) ビルトイン テスト コンフィギュレーション
Run Unit Tests in Container
を複製し、パラメーターを変更してカスタム テスト コンフィギュレーションを作成します。たとえば、[実行] > [全般] > [実行の詳細] > [リモート実行コマンド] で実行ラッパーを変更します (デフォルトは${cpptest:install_dir}/integration/docker/remote-exec
)。 - ビルトインの、またはカスタマイズした
Run Unit Tests in Container
テスト コンフィギュレーションを実行します。C/C++test は以下を実行します。
a) プロジェクト プロパティで指定されたリモート ツールチェーンを使用してテスト実行モジュールをビルドします (「コンテナーでのテスト用にプロジェクトをセットアップする」を参照)。
b)remote-exec
ラッパー スクリプトを使用してコンテナー内でテストを実行します。
c) テスト結果およびカバレッジ情報を自動収集します。