単体テストのプロセス アーキテクチャを構成する
この記事では、単体テストの実行に使用されるプロセス アーキテクチャ、プロセス アーキテクチャを設定する方法、64 ビット プロセスとして単体テストを実行する方法について説明します。
この記事では、単体テストのプロセス アーキテクチャを設定する方法と、64 ビット プロセスとして単体テストを実行する方法について説明します。
MSTest プロジェクトのプロセス アーキテクチャを構成する
Visual Studio Testing Platform (VSTest) をテスト ランナーとして使用する MSTest プロジェクトの場合、既定のターゲット プラットフォーム (プロセス アーキテクチャ) はオペレーティング システムのアーキテクチャと一致します。 次の図に示すように、[テスト エクスプローラー] [設定]を使用するか、[テスト] メニューを使用して、任意の CPU をターゲット プラットフォームとして するように設定されたプロジェクトに対して、この動作をオーバーライドできます。
[テスト] メニューから、[AnyCPU プロジェクトのプロセッサ アーキテクチャ] を選択します。
VSTest ではなくテスト ランナーとして MSTest を使用するプロジェクトの場合、アーキテクチャは MSBuild とランタイム ルールによって厳密に決定されます。 実行可能ファイルは、MSBuild/ランタイム設定で指定された推奨アーキテクチャに基づいて生成されます。 MSBuild プロパティ (PreferNativeArm64 など) を使用してこの基本設定を調整できますが、AnyCPU プロジェクトのプロセッサ アーキテクチャ 設定 を使用して、これらのプロジェクトのアーキテクチャを変更することはできません。
手記
テスト ランナーは、MSTest プロジェクト テンプレートを使用するか、MSBuild プロパティを使用して単体テスト プロジェクトを作成するときに設定できます。 MSTest テスト ランナーと VSTest テスト ランナーの違いの詳細については、「Microsoft.Testing.Platform と VSTest の比較を参照してください。
PreferNativeArm64 (MSTest)
PreferNativeArm64
MSBuild プロパティを使用する場合、プロジェクトは ARM64 アーキテクチャ (使用可能な場合) でネイティブに実行することを優先します。 このプロパティは、実行可能ファイルを生成し、MSBuild ランタイム 規則に従うプロジェクトに適用できます。 この設定は Visual Studio Test Platform (VSTest) テスト ランナーでは無視され、MSTest がテスト ランナーとして構成されている MSTest プロジェクトにのみ適用されます。
64 ビット プロセスとして単体テストを実行する
64 ビット コンピューターがある場合は、単体テストを実行し、64 ビット プロセスとしてコード カバレッジ情報をキャプチャできます。
64 ビット プロセスとして単体テストを実行するには:
コードまたはテストが 32 ビット/x86 としてコンパイルされたが、64 ビット プロセスとして実行する場合は、任意の CPU として再コンパイルします。
ヒント
柔軟性を最大限に高めるために、任意の CPU 構成 使用してテスト プロジェクトをコンパイルします。 その後、32 ビットエージェントと 64 ビット エージェントの両方で実行できます。 64 ビットでのみサポートされているコードを呼び出す場合を除き、64 ビット 構成でテスト プロジェクトをコンパイルする利点はありません。
単体テストを 64 ビット プロセスとして実行するように設定します。
Visual Studio メニューから、テストを選択し、AnyCPU プロジェクトのプロセッサ アーキテクチャ選択します。 x64 選択して、64 ビット プロセスとしてテストを実行します。
-又は-
.runsettings ファイルで
<TargetPlatform>x64</TargetPlatform>
を指定します。 この方法の利点は、異なるファイル内の設定のグループを指定し、異なる設定をすばやく切り替えることができるということです。 ソリューション間で設定をコピーすることもできます。 詳細については、「.runsettings ファイルを使用した単体テストの構成」を参照してください。手記
VSTest ではなくテスト ランナーとして MSTest を設定した場合、anyCPU プロジェクトの プロセッサ アーキテクチャ 設定は MSTest プロジェクトではサポートされません。