ユニット テストと C++
更新 : 2007 年 11 月
Visual C# と Visual Basic では、単体テストを使用できます。
メモ : |
---|
ただし、Visual C# と Visual Basic のジェネリック型およびジェネリック メソッドについては、単体テストの生成にいくつかの制約が適用されます。詳細については、「ユニット テストおよびジェネリック」を参照してください。 |
このトピックで説明する詳細に従うと、Visual C++ でも単体テストを使用できます。
単体テストで Visual C++ を使用できる方法は、ソリューションでの Visual C++ の役割によって異なります。次のケースが考えられます。
Visual C++ で記述されたコードをテストするために、単体テストを使用しています。詳細については、「Visual C++ 実行コード」を参照してください。
プロジェクトに Visual C++ で記述された単体テストが含まれています。詳細については、「テスト プロジェクトと Visual C++」を参照してください。
Visual C++ で記述されたコードから単体テストを自動生成します。詳細については、「コードの生成と Visual C++」を参照してください。
Visual C++ 実行コード
テストするコード (実行コードと呼ばれます) について、次の点に注意してください。
アンマネージ。実行コードがアンマネージである場合、スタティック ライブラリ、.obj ファイル、または DLL エントリ ポイントから呼び出しできる必要があります。アンマネージ Visual C++ には、実行時検出機構であるリフレクションが提供されていないため、実行可能ファイルまたは DLL 内に埋め込まれているクラス メソッドは動作しません。そのため、従来のネイティブなバインディング機構のみが動作します。
混合。混合プロジェクトとは、/clr コンパイラ オプションを使用するプロジェクトです。実行コードが混合であり、実行可能ファイルではない場合、コードの任意の呼び出し可能メソッドを呼び出して、テストできます。
安全または純粋。実行コードが安全または純粋の場合、実行可能ファイルまたは DLL の任意の呼び出し可能アセンブリ メソッドを呼び出して、テストできます。
テスト プロジェクトと Visual C++
テスト プロジェクトには、プロジェクトに設定したコンパイラ オプションに基づいて、さまざまな機能があります。詳細については、「コンパイラ オプション」および「/clr (共通言語ランタイムのコンパイル)」を参照してください。次のセクションでは、さまざまなコンパイラ オプション設定で利用できる機能について説明します。
アンマネージ
テスト プロジェクトのプログラミング言語として、アンマネージ (ネイティブ) Visual C++ は使用できません。
混合
混合プロジェクトとは、/clr コンパイラ オプションを使用するプロジェクトです。この種類のテスト プロジェクトでは、次の実行コードをテストする機能が提供されています。
静的なネイティブ ライブラリ
ネイティブ DLL エントリ ポイント
スタンドアロン .obj ファイル
呼び出し可能なメソッドを備えた混合モード DLL アセンブリ。実行可能ファイルにはアンマネージ コードが含まれ、一般にアンマネージ実行可能コードは、再ベース アドレス対応ではないため、これには実行可能ファイルは含まれません。
呼び出し可能な任意のマネージ メソッド。/clr:pure または /clr:safe のコンパイラ オプションでコンパイルされるコードです。
安全または純粋
/clr:pure または the /clr:safe のコンパイラ オプションをテスト プロジェクトで使用している場合は、呼び出し可能なマネージ メソッドをテストできます。つまり、/clr、/clr:pure、または /clr:safe のコンパイラ オプションでコンパイルされる実行コードです。
コードの生成と Visual C++
単体テストを Visual C++ テスト プロジェクトに生成できます。これらのテストは Visual C++ 実行コード プロジェクトから生成できます。次の点に注意してください。
実行コード プロジェクト。実行コードが Visual C++ で記述されている場合、製品で /clr:safe コンパイラ オプションを使用する場合のみ単体テストを生成できます。
テスト プロジェクト。コードの生成によって、Visual C++ テスト プロジェクトのあらゆる種類 (混合、安全、および純粋) で単体テストを作成できます。作成される既定のプロジェクトの種類は、/clr:safe プロジェクトです。プロジェクトを /clr または /clr:pure に変更する場合、常に Visual C++ コンパイラ オプションを使用して、それを行います。詳細については、「/clr (共通言語ランタイムのコンパイル)」を参照してください。