Microsoft.Testing.Platform 和 VSTest 比較
Microsoft.Testing.Platform
是 VSTest的輕量且可攜的替代方案,用於在命令列、持續整合 (CI) 管線、Visual Studio 測試總管和 Visual Studio Code 中執行測試。 在本文中,您將了解 MSTest 執行器與 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.Platform NuGet 套件和 Microsoft.Testing.*
命名空間中的其他程式庫。 如同 VSTest,Microsoft.Testing.Platform
是開放原始碼,且具有 microsoft/testfx GitHub 存放庫。
通訊協定 (預覽)
注意
Visual Studio 測試總管支援自 17.10 以後的預覽版本中的 Microsoft.Testing.Platform 通訊協定。 如果您使用舊版 Visual Studio 執行/偵錯測試,測試總管將使用 vstest.console.exe
和舊的通訊協定來執行這些測試。
Microsoft.Testing.Platform 使用依據於 JSON-RPC 的協定在 Visual Studio 和測試執行程式流程之間進行通訊。 該協定記載在 MSTest GitHub 存放庫。
VSTest 也會使用以 JSON 為基礎的通訊協定,但不是以 JSON-RPC 為基礎。
停用新的通訊協定
若要在 [測試總管] 中停用新通訊協定的使用,您可以編輯 csproj 並移除 TestingPlatformServer
功能。
<ItemGroup>
<ProjectCapability Remove="TestingPlatformServer" />
</ItemGroup>
可執行檔
VSTest 隨附多個可執行檔,特別是 vstest.console.exe
、testhost.exe
和 datacollector.exe
。 不過,MSTest 會直接內嵌到您的測試專案中,而且不會隨附任何其他可執行檔。 測試專案編譯的可執行檔可用來裝載所有測試工具,並且進行執行測試所需的所有工作。