從 MSTestV1 升級至 MSTestV2
您可以將 .csproj 中參考的 MSTest 版本從 MSTestV1 重定為 MSTestV2,以升級測試專案。 並非 MSTestV1 中的所有功能都已導入 MSTestV2 中,因此可能需進行一些變更才能解決錯誤。 請參閱 MSTestV2 中不支援的 MSTestV1 功能,了解哪些功能不再有作用。 其中一些功能可能需要從測試中移除。
從單元測試專案中移除對 Microsoft.VisualStudio.QualityTools.UnitTestFramework 的組件參考。
將 NuGet 套件參考新增至 MSTestV2,包括 nuget.org 上的 MSTest.TestFramework 和 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>
現在以 MSTestV2 為目標的範例 .csproj:
<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 應用程式 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 中的測試案例項目關聯。
相關內容
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應