テスト プロジェクトをアップグレードするには、.csproj で参照されている MSTest バージョンを MSTestV1 から MSTestV2 に再ターゲットします。 MSTestV1 のすべての機能が MSTestV2 に転送されたわけではないため、エラーを解決するために一部の変更が必要になる場合があります。 機能しなくなった機能を理解するには、MSTestV2 でサポートされていない MSTestV1 機能 参照してください。 これらの機能の一部をテストから削除する必要がある場合があります。
単体テスト プロジェクトから Microsoft.VisualStudio.QualityTools.UnitTestFramework へのアセンブリ参照を削除します。
MSTest.TestFramework や、nuget.org 上の MSTest.TestAdapter パッケージを含む NuGet パッケージ参照を MSTestV2 に追加します。NuGet パッケージ マネージャー コンソールには、次のコマンドを使用してパッケージをインストールできます。
PM> Install-Package MSTest.TestAdapter -Version 3.1.1 PM> Install-Package MSTest.TestFramework -Version 3.1.1
古いスタイルの csproj の例
MSTestV1 をターゲットとする .csproj のサンプル:
<Reference Include="Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<Private>False</Private>
</Reference>
サンプル .csproj は現在 MSTestV2 を対象としています。
<Reference Include="Microsoft.VisualStudio.TestPlatform.TestFramework, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\MSTest.TestFramework.2.1.2\lib\net45\Microsoft.VisualStudio.TestPlatform.TestFramework.dll</HintPath>
</Reference>
手記
コード化された UI テストまたは Web ロード テストのテスト プロジェクトは、MSTestV2 と互換性がありません。 これらのプロジェクトの種類は非推奨になりました。 コード化された UI テストの廃止 と Web ロード テストの廃止 の詳細を参照してください。
SDK スタイルの csproj (.NET Core および .NET 5 以降)
.csproj が新しい SDK スタイルの .csproj である場合、すでに MSTestV2 を使用している可能性が高いでしょう。 MSTestV2 用の NuGet パッケージと、NuGet 上の MSTestV2 アダプター を見つけることができます。
例:
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.7.1" />
<PackageReference Include="MSTest.TestAdapter" Version="3.1.1" />
<PackageReference Include="MSTest.TestFramework" Version="3.1.1" />
</ItemGroup>
MSTestV2 にアップグレードする理由
2016 年に、MSTestV2 を使用して MSTest フレームワークを進化させる次の手順をリリースしました。 この変更の詳細については、ブログ投稿 お知らせで確認できます。
MSTestV2 は、NuGet パッケージとして配信されるため、より簡単に取得および更新できます。
統一されたアプリ プラットフォームのサポート – MSTestV2 は、.NET Framework、.NET Core、ASP.NET Core、UWP 全体で統一されたアプリ プラットフォームサポートを提供するコンバージド実装です。 その他のを参照してください。
実装は完全にクロス プラットフォーム (Windows、Linux、Mac) です。 その他のを参照してください。
MSTestV2 では、.NET Framework 4.5.0 以降、.NET Core 1.0 以降 (ユニバーサル Windows Apps 10 以降)、ASP.NET Core 1.0 以降、および .NET 5 以降を対象とします。
統一された単一のエンド ユーザー拡張メカニズムを提供します。 その他のを参照してください。
すべての MSTest ベースのテスト プロジェクトに対して統一された
DataRow
サポートを提供します。 その他のを参照してください。TestCategory
属性をクラスまたはアセンブリのレベルに配置できるようにします。 その他のを参照してください。別のアセンブリで定義されている基底クラスのテスト メソッドが検出され、派生した Test クラスから実行されるようになりました。 この変更により、派生テスト クラスの型と一貫性のある動作が得られます。 互換性上の理由からこの動作が必要ない場合は、次の実行設定を使用して元に戻すことができます。
<RunSettings> <MSTest> <EnableBaseClassTestMethodsFromOtherAssemblies>false</EnableBaseClassTestMethodsFromOtherAssemblies> </MSTest> </RunSettings>
テストのアセンブリ内並列実行によって、並列実行をより細かく制御できます。 この機能により、アセンブリ内でテストを並列で実行できます。
TestClass
のTestCleanup
メソッドは、対応するTestInitialize
メソッドが失敗した場合でも呼び出されます。 問題の詳細情報。AssemblyInitialize
とClassInitialize
でかかった時間は、テスト期間にはカウントされません。 テストのタイムアウトに対する影響がこの変更によって制限されます。実行できないテストは、
.runsettings
ファイル内のアダプター ノードの一部であるMapNotRunnableToFailed
タグを使用して、失敗としてマークされるように構成できます。<RunSettings> <MSTest> <MapNotRunnableToFailed>true</MapNotRunnableToFailed> </MSTest> </RunSettings>
MSTestV2 でサポートされていない MSTestV1 機能
- "順序付けされたテスト" にテストを含めることはできません。
.testsettings
ファイルに対する変更:- アダプターの構成に使用できなくなりました。
<LegacySettings>
セクションはサポートされなくなりました。つまり、属性の設定には使用できません。 たとえば、DeploymentItem
します。 テスト実行の構成には、新しい .runsettings ファイル を使用します。
- アダプターは、.vsmdi ファイルとして指定されたテスト リストをサポートしていません。
- "コード化された UI テスト プロジェクト" と "Web パフォーマンスとロード テスト プロジェクト" の種類はサポートされていません。 コード化された UI テストの廃止 と Web ロード テストの廃止 の詳細を参照してください。
- TFS のテスト ケース項目との関連付けはサポートされていません。
関連コンテンツ
.runsettings
を使用してテストの実行を構成する- コードの単体テスト
- テスト エクスプローラー を使用して単体テストをデバッグする