在 .NET 中,測試框架與測試平台是不同的組件,共同工作以發現並執行測試。
- 測試框架定義了你所撰寫的測試模型,例如 MSTest、NUnit、xUnit.net 或 TUnit。
- 測試平台執行測試、整合 IDE 與 CLI,並提供共享擴充點。
你可以在兩個測試平台中選擇:
- VSTest
- Microsoft.Testing.Platform (MTP)
小提示
最簡單的設定是選擇一個平台來建立你的儲存庫,並針對該平台持續配置測試專案、CI 和工具。 不要在同一解決方案或執行設定中混用基於 VSTest 和 Microsoft.Testing.Platform 的 .NET 測試專案,因為該設定不支援。 如果你也執行依賴 VSTest 的非 .NET 測試(例如 C++ 或 JavaScript 測試),請將這些測試與基於 MTP 的 .NET 測試分開配置執行。
如何選擇你的平台
請利用以下情境快速做出選擇。
| 使用案例 | 選擇 | 為什麼 |
|---|---|---|
| 你需要 Native AOT 或修剪測試執行場景。 | Microsoft.Testing.Platform | MTP 支援這些現代部署情境,而 VSTest 則不支援。 |
| 你是在建立打包的 WinUI 或 UWP 測試專案。 | VSTest | 這些專案類型目前不支援 MTP。 |
| 你需要混合使用 .NET 測試和非 .NET 測試介面卡(例如 JavaScript 或 C++ 介面卡)。 | VSTest | VSTest 支援混合語言介面卡情境,而 MTP 則是針對 .NET 專用的。 |
| 你希望測試專案的行為像一般的執行檔(,直接執行檔運行 ,以及啟動專案的 F5 流程)。 | Microsoft.Testing.Platform | MTP 是優先執行檔,所以測試應用程式在本地和 CI 工作流程中會像標準的 .NET 應用程式一樣執行。 |
| 你依賴於現有工具間長期建立的整合。 | VSTest | VSTest 擁有最長的相容性紀錄,涵蓋現有產品、任務與流程。 MTP 支援在生態系統中持續成長,但部分整合可能落後於 VSTest。 |
| 你偏好嚴格的預設和明確的行為。 | Microsoft.Testing.Platform | MTP 偏好確定性執行,採用輕量級、可選擇加入的擴充模型及建置時註冊。 例如,當不執行測試時,它可能會失敗,減少環境依賴的變異性,並允許你在每個環境中停用個別擴充功能。 |
| 你偏好較柔和、廣泛且向下相容的預設。 | VSTest | 兩個平台都重視向下相容性。 VSTest 優先為多元且現有的工具鏈提供相容性導向的預設,而 MTP 則在其自有擴充模型中提供向下相容性。 |
| 你被 VSTest 特定的問題或行為阻擋在你目前的工作流程中。 | Microsoft.Testing.Platform | 在許多情況下,因為執行時模型和擴充架構不同,移到 MTP 後,相同的工作流程並不會受到影響。 |
如果你的具體使用情境沒有列出,兩個平台都是合理的選擇。
整合與工具支援
| 整合領域 | VSTest | Microsoft.Testing.Platform |
|---|---|---|
| IDE 整合 | 成熟地整合 Visual Studio 及其他依賴 VSTest 協定與轉接器的工具。 | 支援 Visual Studio 與 Visual Studio Code 情境,並在生態系統部分區域持續進行整合工作。 |
| CI 與外部工具 | 廣泛支援長期存在的 Microsoft 及非 Microsoft 工具與任務。 在Azure DevOps中,你可以使用 VSTest 任務(VSTest@3,vstest.console)或 .NET 任務(DotNetCoreCLI@2,dotnet test)。 |
它在 CI 和現代 .NET 工作流程中運作,但有些第三方整合可能還是落後於 VSTest。 在Azure DevOps中,使用.NET任務(DotNetCoreCLI@2,dotnet test)。 |
| 行為 | 預設的 VSTest 模式。 VSTest 的論點和行為都適用。 | 原生 MTP 模式可在 .NET 10 SDK 及更新版本中提供。 |
關於模態與參數的完整細節 ,請參見 Testing with 。
從你的測試框架開始
如果你選擇VSTest的話
- MSTest: 用 MSTest 執行測試
- NUnit: NUnit 與 Microsoft.Testing.Platform
- xUnit.net:開始使用 xUnit.net
- TUnit:不支援於 VSTest 上。 請使用 Microsoft.Testing.Platform。
如果你選擇 Microsoft.Testing.Platform
- MSTest: 用 MSTest 執行測試
- NUnit: Microsoft.Testing.Platform 在 NUnit 中的支援(NUnit 執行器)
- xUnit.net: Microsoft 測試平台(xUnit.net v3)
- TUnit: TUnit documentation
後續步驟
- 學習 MTP 概念: Microsoft.Testing.Platform 概述
- 了解 VSTest 選項
- 從 VSTest 遷移: 從 VSTest 遷移到 Microsoft.Testing.Platform
- 新增功能: Microsoft.Testing.Platform 功能