汎用テストのトラブルシューティング
汎用テストを実行すると、汎用テストを 64 ビット プラットフォームで実行する場合にコード カバレッジ データの収集が動作しないことを通知するエラーが表示されます。このエラーを解消する方法については、「32 ビット制限の回避」セクションを参照してください。
要件
- Visual Studio Ultimate, Visual Studio Premium
32 ビット制限の回避
コード カバレッジのインストルメンテーションは 32 ビット モードでのみ動作し、64 ビット モードでは動作しません。これは、コード カバレッジ用にインストルメント化されたアセンブリの読み込みには 32 ビット モードしか使用できないからです。
[!メモ]
コード カバレッジ データを収集しない場合は、単体テストを 64 ビット コンピューターで実行することに制限はありません。これは、クラス ライブラリを読み込むテスト エンジンである VSTestHost.exe が 32 ビット プロセスで実行されるためです。
汎用テストの場合、ラップされたアプリケーションは "Any CPU" に対してビルドされ、64 ビット コンピューターでは 64 ビット プロセスとして実行されます。この 64 ビット プロセスが 32 ビット アセンブリを読み込もうとすると、エラーが発生します。これは、次のいずれかの方法で解消できます。
製品コードがコンパイルされて作成されるバイナリ ファイルを汎用テストが直接ラップする場合は、次の方法を使用します。
- ソリューション構成の x86 への変更
汎用テストと製品コードのバイナリ ファイルとの間にレイヤーが存在する場合は、次のいずれかの方法を使用します。つまり、汎用テストが中間アプリケーションをテスト ハーネスとしてラップする場合です。テストする製品コードは、テスト ハーネスが実行します。
- 製品コードのバイナリ ファイルを読み込むアプリケーションのビルド設定の変更
ソリューション構成の x86 への変更
ソリューション構成を "Any CPU" から "x86" に変更します。
ソリューション構成を変更するには
ソリューションを右クリックし、[プロパティ] を選択します。
[ソリューション プロパティ ページ] ダイアログ ボックスが表示されます。
[構成プロパティ] 下に、[構成] を選択します。
[構成マネージャー] を選択します。
[構成マネージャー] ダイアログ ボックスが表示されます。
[アクティブ ソリューション プラットフォーム] の [新規] をクリックします。
[新しいソリューション プラットフォーム] ダイアログ ボックスが表示されます。
[新しいプラットフォームを入力または選択してください] 下に、[x86] を選択します。
[新しいソリューション プラットフォーム] ダイアログ ボックスで、[OK.] を選択します。
変更を保存するかどうかを確認するダイアログ ボックスで [あり] を選択します。
[構成マネージャー] ダイアログ ボックスで、[アクティブ ソリューション プラットフォーム] 下に、 [x86] がオンになっている [閉じる] 次にを選択します。
[*** ソリューション] プロパティ ページ ***] ダイアログ ボックスで、[OK] を選択します。
製品コードのバイナリ ファイルを読み込むアプリケーションのビルド設定の変更
この手順は、汎用テストでラップする中間アプリケーション (テスト ハーネス) をインストルメント化する場合に使用します。テストするコードは、中間アプリケーションが実行します。
この手順では、中間アプリケーションの設定を変更し、x86 プラットフォーム用にビルドされるようにします。
[!メモ]
この手順は、ラップされるアプリケーションがソリューションに含まれているプロジェクトからビルドされた場合にのみ機能します。
ラップされるアプリケーションのビルド設定を変更するには
ソリューション エクスプローラーで、中間アプリケーションのビルドを右クリックし、を [プロパティ] プロジェクトを選択します。
プロジェクトのプロパティ ページが表示されます。
[ビルド] タブをクリックします。
プラットフォーム ターゲットとして [x86] を指定します。
[ファイル] で、メニューの [選択されたファイルを上書き保存] を選択します。