Microsoft.Testing.Platform 是輕量型且可攜式的替代方案,可用於在命令行、持續整合 (CI) 管線、Visual Studio 測試總管和 Visual Studio Code 中執行測試 VSTest。 在本文中,您將瞭解 Microsoft.Testing.Platform 與 VSTest 之間的主要差異。
測試執行的差異
測試會根據執行器以不同的方式執行。
執行 VSTest 測試
VSTest 隨附於 Visual Studio、.NET SDK,以及作為 Microsoft.TestPlatform NuGet 套件中的獨立工具。 VSTest 會使用執行器可執行檔來執行名為 vstest.console.exe的測試,這可以直接或透過 dotnet test使用。
執行 Microsoft.Testing.Platform 測試
Microsoft.Testing.Platform 會直接內嵌到您的測試專案中,而且不會運送任何額外的可執行檔。 當您執行項目可執行檔時,測試就會執行。 如需執行 Microsoft.Testing.Platform 測試的詳細資訊,請參閱 Microsoft.Testing.Platform 概觀:執行和偵錯測試。
命名空間和 NuGet 套件
若要熟悉 Microsoft.Testing.Platform 和 VSTest,瞭解各自使用的命名空間和 NuGet 套件會有幫助。
VSTest 命名空間
VSTest 是測試工具的集合,也稱為 測試平臺。 VSTest 原始碼是開源的,可以在 microsoft/vstest GitHub 存放庫 中取得。 程序代碼會使用 Microsoft.TestPlatform.* 命名空間。
VSTest 是可延伸的,一般類型會放在 Microsoft.TestPlatform.ObjectModel NuGet 套件中。
Microsoft.Testing.Platform 命名空間
Microsoft.Testing.Platform 是以 Microsoft.Testing.PlatformMicrosoft.Testing.* 命名空間中的 NuGet 套件和其他連結庫為基礎。 和 VSTest 一樣,Microsoft.Testing.Platform 是開放原始碼,且具有 microsoft/testfx GitHub 存放庫。
通訊協定
注意
Visual Studio 測試總管支援自 17.12 起的 Microsoft.Testing.Platform 通訊協定。 如果您使用舊版 Visual Studio 執行/偵錯測試,[測試總管] 將會使用 vstest.console.exe 和舊的通訊協定來執行這些測試。
Microsoft.Testing.Platform 會使用以 JSON-RPC 為基礎的通訊協定,在 Visual Studio 與測試執行器程式之間進行通訊。 通訊協議記載於 MSTest GitHub 存放庫中 。
VSTest 也會使用 JSON 型通訊協定,但不是以 JSON-RPC 為基礎。
停用新的通訊協定
若要在 [測試總管] 中停用新通訊協定的使用,您可以編輯專案以新增下列屬性:<DisableTestingPlatformServerCapability>true</DisableTestingPlatformServerCapability>。
您也可以移至 Visual Studio 中的 [預覽功能] 選項,並取消選取 [使用測試平台伺服器模式] 選項。
可執行檔
VSTest 會提供多個可執行檔,特別是 vstest.console.exe、testhost.exe和 datacollector.exe。 不過,Microsoft.Testing.Platform 會直接內嵌到您的測試專案中,而且不會提供任何其他可執行檔。 測試項目編譯的可執行檔可用來裝載所有測試工具,並執行執行測試所需的所有工作。