從 MSTestV1 升級至 MSTestV2
您可以透過將 .csproj 中參考的 MSTest 版本從 MSTestV1 切換為 MSTestV2 來升級您的測試專案。 MSTestV1 中的所有功能並未轉送至 MSTestV2,因此可能需要一些變更才能解決錯誤。 請參閱 MSTestV2 不支援 MSTestV1 功能,以瞭解哪些功能不再運作。 其中某些功能可能需要從測試中移除。
從單元測試專案中移除Microsoft.VisualStudio.QualityTools.UnitTestFramework 的元件參考。
將 NuGet 套件參考新增至 MSTestV2,包括 MSTest.TestFramework,以及 nuget.org 上的 MSTest.TestAdapter 套件。您可以使用下列命令,在 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。 您可以在 NuGet 上找到 MSTestV2 和 MSTestV2 配接器 的 NuGet 套件。
例:
<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 開放原始碼。
統一應用程式平臺支援 – 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
屬性放在類別或元件的層級。 深入瞭解。從另一個元件中定義的基類中的測試方法,現在會從衍生的測試類別中被探索並執行。 這項變更將使衍生測試類別類型的行為變得一致。 如果基於相容性原因而不需要此行為,可以使用下列執行設定來將其變更回去:
<RunSettings> <MSTest> <EnableBaseClassTestMethodsFromOtherAssemblies>false</EnableBaseClassTestMethodsFromOtherAssemblies> </MSTest> </RunSettings>
提供對測試中的 元件內平行執行 的更精細控制。 這項功能可讓您平行執行元件內的測試。
即使相應的
TestInitialize
方法失敗,仍會在TestClass
上調用TestCleanup
方法。 問題詳細資料。AssemblyInitialize
和ClassInitialize
所花費的時間不會計入測試持續時間。 這項變更會限制其對測試逾時的影響。無法執行的測試可以設定為透過
MapNotRunnableToFailed
標籤示為失敗,這是.runsettings
檔案中配接器節點的一部分。<RunSettings> <MSTest> <MapNotRunnableToFailed>true</MapNotRunnableToFailed> </MSTest> </RunSettings>
MSTestV2 不支援的 MSTestV1 功能
- 測試不能包含在「已排序的測試」中。
-
.testsettings
檔案的變更:- 無法再用來設定配接器。
- 不再支援
<LegacySettings>
區段,這表示您無法使用它來設定屬性。 例如,DeploymentItem
。 使用新的 .runsettings 檔案 進行測試執行設定。
- 配接器不支援指定為 .vsmdi 檔案的測試清單。
- 不支援「自動程式化 UI 測試專案」和「Web 效能和負載測試專案」類型。 深入了解 程式化 UI 測試淘汰 和 Web 負載測試淘汰。
- 不支援與 TFS 中的測試案例項目關聯。