Visual Studio 2010 単体テスト プロジェクトをアップグレードする

Visual Studio 2012 には Visual Studio 2010 SP1 テスト プロジェクトとの、テスト プロジェクト互換性があります。 たとえば、Visual Studio 2010 SP1 を使用して作成したテスト プロジェクトを、アップグレードせずに Visual Studio 2012 で開くことができます。 したがって、チームは同じテスト プロジェクトの作業に Visual Studio 2010 SP1 と Visual Studio 2012 の両方を使用できます。 詳しくは、「Visual Studio 2010 からアップグレードをテストできます」を参照してください。

Visual Studio 2012 には単体テストのいくつかの変更が加わります。 これらの変更のため、Visual Studio の以前のバージョンと Visual Studio 2012 間の互換性の問題について理解することは重要です。 単体テストの変更の中でも重要な変更は、Visual Studio 2012 に単体テスト プロジェクト テンプレートをはじめ、複数のテスト プロジェクト テンプレートが含まれることです。 新しい単体テストは、新しい単体テスト プロジェクト テンプレートに追加されます。 単体テストはまた、コード化された UI テスト プロジェクト テンプレートと呼ばれる別の新しいテスト プロジェクト テンプレートに含めることもできます。 新しいテスト プロジェクト テンプレートの詳細については、「旧バージョンの Visual Studio からのテストのアップグレード」を参照してください。 既定では、新しい単体テスト プロジェクトにテスト設定ファイルは含まれなくなりました。 テスト設定ファイルを除外すると、単体テストのパフォーマンスが向上します。 互換性については、Visual Studio 2010 を使用して作成した既存のテスト プロジェクトを引き続き使用できます。 しかし、テスト設定ファイルの具体的な必要性がないのであれば、パフォーマンス上の理由から、テスト プロジェクトに関連付けられているテスト設定ファイルを削除することをお勧めします。 たとえば、分散環境で単体テストを実行したり、特定の診断データを収集する必要があったりする場合、テスト設定ファイルを保持することもできます。 同様に、新しい単体テスト プロジェクト テンプレートや、コード化された UI テスト プロジェクト テンプレートを使用する必要がある場合、テスト設定ファイルを手動で追加することもできます。

注意

既存の Visual Studio 2010 SP1 テスト プロジェクトの単体テストは、Visual Studio 2010 SP1 と Visual Studio 2012 の間でシームレスに機能します。 単体テストを含む Visual Studio 2010 テスト プロジェクトを Visual Studio 2012 で開いた場合、またはその逆の場合、テスト プロジェクト ファイルは変更されません。

注意事項

Visual Studio 2010 は 11.0 ツールセットを対象とした C++/CLI プロジェクト、つまり Visual Studio 2012 で作成されたプロジェクトを開くことはできません。 この制限は、C++/CLI 単体テスト プロジェクトのみならず、すべての C++/CLI プロジェクトに適用されます。

注意

コマンド ラインから vstest.console.exe を使用して新しい単体テストを実行できます。 vstest.console.exe 使用の詳細については、「VSTest.Console.exe のコマンド ライン オプション」を参照するか、ヘルプ スイッチ vstest.console.exe /? を使用してコマンドを実行してください。 MStest.exe を使用して既存の単体テストの実行を継続できます。 詳細については、「MSTest を使用したコマンド ラインからの自動テストの実行」および「MSTest.exe のコマンド ライン オプション」を参照してください。

もう 1 つの重要な変更は、新しいテスト エクスプローラーです。 Visual Studio 2012 では、Visual Studio の以前のバージョンで使い慣れていたかもしれない、テスト ビュー ウィンドウのような、いくつかのテスト用ウィンドウが使用されなくなっています。 テスト エクスプローラーは、ソフトウェア開発作業に単体テストを導入した開発者や開発チームをよりよくサポートするように設計されています。 詳細については、「テスト エクスプローラーを使用して単体テストを実行する」を参照してください。

Visual Studio 2010 SP1 と Visual Studio 2012 の互換性の問題

Visual Studio 2010 SP1 と Visual Studio 2012 の間で単体テストを移行する場合に、知っておくべきいくつかの問題があります。

単体テスト機能 懸案事項 ソリューション
Visual Studio 2012 では、テスト リスト (.vsmdi ファイル) は使用されていません。 Visual Studio から新しいテスト リスト (.vsmdi ファイル) を作成、またはテスト リストを実行することはできません。 ヒント: テスト カテゴリは、旧バージョンの Microsoft Visual Studio のテスト リスト機能よりも高い柔軟性を備えています。 テスト カテゴリと論理演算子を組み合わせて使用すると、複数のカテゴリのテストを同時に実行したり、実行するテストを複数のカテゴリに属するテストに限定したりすることができます。 また、テスト メソッドを作成するときにテスト カテゴリの追加が容易になり、テスト メソッドの作成後にテスト リストを保守する必要がありません。 テスト カテゴリを使用すれば、テスト リストを保守する <ソリューション名>.vsmdi ファイルのチェックインおよびチェックアウトを行う必要がなくなります。 詳細については、「テスト カテゴリの定義によるテストのグループ化」を参照してください。 - テスト リストを使用する既存のテスト プロジェクトとの互換性を維持するために、依然として Visual Studio を使用して .vsmdi ファイルを編集することができます。
- 移行されたテスト リストを Visual Studio で実行することはできませんが、コマンド ラインから mstest.exe を使用すればそれらを実行することができます。 詳細については、「MSTest を使用したコマンド ラインからの自動テストの実行」を参照してください
- ビルド定義でテスト リストを使用していた場合、テスト リストを使用し続けることができます。 詳細については、「方法: アプリケーションのビルド後にスケジュールされているテストを構成および実行する」および「ビルド プロセスでのテストの実行」を参照してください。
Visual Studio 2012 ではプライベート アクセサーは使用されていません。

Visual Studio の以前のバージョンでは、Publicize を使用して内部アプリケーション プログラミング インターフェイス (API) を指定し、対になる公開 API を作成できました。それをテストで呼び出して、製品の内部 API を呼び出すことができました。 次いで、コード生成を使用してテスト スタブを作成し、そのスタブ内にコード スニペットを生成することができました。
プライベート アクセサーを作成できなくなります。
  • Visual Studio 2010 テスト プロジェクトは Visual Studio 2012 でコンパイルして使用できます。 ビルドには出力の警告が含まれます。
  • 依然として内部 API をテストする必要がある場合は、次のオプションがあります。

    • PrivateObject クラスを使用して、コードの内部 API およびプライベート API へのアクセスを支援します。 これは Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll アセンブリ内にあります。
    • コードを反映できるリフレクション フレームワークを作成して、内部 API またはプライベート API にアクセスします。
    • アクセスしようとしているコードが内部コードの場合、テスト コードが内部 API にアクセスできるよう InternalsVisibleToAttribute を使用すれば API にアクセスできる可能性があります。
テストの影響は削除されます
テスト エクスプローラーからの TRX ログによる実行結果の共有。 TRX ログは、依然としてコマンド ラインおよびチーム ビルドから取得できます。

関連項目

Visual Studio プロジェクトの移植、移行、およびアップグレード
コードの単体テスト
旧バージョンの Visual Studio からのテストのアップグレード
Visual Studio 2010 からのコード化された UI テストのアップグレード