Microsoft.Testing.Platform 是 VSTest 的輕量型且可攜式的替代方案,能在各種環境中執行測試,包括持續整合(CI)管線、CLI、Visual Studio Test Explorer 和 VS Code Test Explorer。 Microsoft.Testing.Platform 直接內嵌在測試專案中,而且沒有其他應用程式相依性,例如執行測試所需的 vstest.console 或 dotnet test。
提示
如果你需要在 VSTest 和 Microsoft.Testing.Platform 之間做選擇,可以先從 Test platforms 的總覽開始。
當您已決定使用 Microsoft.Testing.Platform 並想了解其模型、能力及操作行為時,請使用這篇文章。
Microsoft.Testing.Platform 為開放原始碼。 您可以在 Microsoft.Testing.Platform GitHub 存放庫中找到 程式代碼。
從這裡開始
根據你接下來的需求,請使用以下路徑:
- 從 CLI、IDE 或 CI 執行並除錯測試: 執行並除錯測試
- 在 CLI 中了解平台行為:進行
dotnet test測試 - 在一處查詢平台和擴充功能的 CLI 選項:Microsoft.Testing.Platform CLI 選項參考
- 配置框架執行器:在 NUnit(NUnit 執行器)中以 MSTest 或 Microsoft.Testing.Platform 支援執行測試
- 遷移現有的 VSTest 設定: 從 VSTest 遷移到 Microsoft.Testing.Platform
- 新增診斷、覆蓋範圍與報告功能: Microsoft.Testing.Platform 功能
- 建立您自己的擴充功能: Microsoft.Testing.Platform 架構、 擴充點與 服務
Microsoft.Testing.Platform 支柱
這個新的測試平臺是以 .NET 開發人員體驗測試小組的經驗為基礎,旨在解決自 2016 年 .NET Core 發行以來遇到的挑戰。 雖然 .NET Framework 與 .NET Core/.NET 之間具有高度的相容性,但外掛程式系統等一些主要功能,以及 .NET 編譯的新可能形式因素,使得隨著目前 VSTest 平臺 架構而發展或完全支援新的運行時間功能相當複雜。
新測試平臺演進的主要驅動因素如下所述:
確定性的特性:確保在不同的環境中執行相同的測試(本機、持續整合)會產生相同的結果。 新的運行時間不依賴反映或任何其他動態 .NET 運行時間功能來協調測試回合。
執行時透明度:測試執行時不會干擾測試框架的程式碼,也不會建立隔離的上下文,例如
AppDomain或AssemblyLoadContext,並且不會使用反射或自定義組件解析器。編譯時間註冊延伸模組:擴充功能,例如測試架構和進程外延伸模組,會在編譯期間註冊,以確保確定性,並協助偵測不一致。
零相依性:平臺的核心是單一 .NET 元件,
Microsoft.Testing.Platform.dll,其沒有支援的運行時間以外的相依性。可託管:測試執行環境可以在任何 .NET 應用程式中託管。 雖然主控台應用程式通常用來執行測試,但您可以在任何類型的 .NET 應用程式中建立測試應用程式。 這可讓您在特殊內容中執行測試,例如裝置或瀏覽器,可能會有限制。
支援所有 .NET 尺寸:支援目前和未來的 .NET 尺寸,包括原生 AOT。
高效能:尋找功能和擴充點之間的正確平衡,以避免使用非基本程式代碼使運行時間膨脹。 新的測試平臺是設計來「協調」測試回合,而不是提供如何執行測試的實作詳細數據。
具備足夠的延展性:新平臺建置於擴展性點之上,以允許運行時執行的最大化自訂。 它可讓您設定測試進程主機、觀察測試程式,以及從測試主機進程內的測試架構取用資訊。
單一模組部署:可裝載性功能可啟用單一模組部署模型,其中單一編譯結果可用來支援跨進程和跨進程的所有擴充點,而不需要運送不同的可執行模組。
支援的測試架構
- MSTest。 在 MSTest 中,
Microsoft.Testing.Platform的支持是透過 msTest 執行器 來完成。 - NUnit。 在 NUnit 中,
Microsoft.Testing.Platform的支持是透過 NUnit 執行器來完成。 - xUnit.net。 欲了解更多資訊,請參閱 Microsoft Testing Platform(xUnit.net v3) 及 Microsoft Testing Platform(xUnit.net v2), 來自 xUnit.net 文件。
- TUnit:完全建構在
Microsoft.Testing.Platform之上,如需詳細資訊,請參閱 TUnit 檔。
支援的目標框架
Microsoft.Testing.Platform 支援 .NET(.NET 8 及更新版本)、.NET Framework(版本 4.6.2 及以上),並以 NETStandard 2.0 為目標,以達到與其他執行環境的最大相容性。
執行和偵錯測試
關於如何從 CLI、Visual Studio、Visual Studio Code 及 CI 管線執行與除錯 MTP 測試專案的詳細指引,請參見 執行與除錯測試。
選項
欲了解完整的平台與擴充功能命令列選項清單,請參閱 Microsoft.Testing.Platform CLI 選項參考。
MSBuild 之整合
NuGet 套件 Microsoft.Testing.Platform.MSBuild 提供各種與 MSBuild 整合的功能。
- 支援
dotnet test。 如需詳細資訊,請參閱 使用 dotnet test 進行測試。 - 需要支援
ProjectCapability,以供Visual Studio和Visual Studio Code測試總管使用。 - 自動產生進入點 (
Main方法)。 - 自動產生組態檔。
- 自動偵測並註冊已安裝的擴充套件。
當此套件啟用時(MSTest、NUnit 和 xUnit 執行者的預設功能),安裝擴充套件 NuGet 套件即可——擴充功能自動註冊,程式碼不改動。 如果你透過設定 <GenerateTestingPlatformEntryPoint>false</GenerateTestingPlatformEntryPoint> 關閉自動產生的入口點,你必須在 Main 方法中手動註冊擴展功能。 每個擴充功能頁面都會記錄其手動註冊調用。
註
此整合功能以遞歸方式運作(如果一個專案引用了另一個參考此封裝的專案,該專案將如同直接引用了此封裝),而且可以透過 IsTestingPlatformApplication MSBuild 屬性來停用。