通过


.NET的测试平台概述

在.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测试的单独配置中运行这些测试。

如何选择平台

使用以下方案快速选择。

用例 选择 为什么
需要本机 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 集成 针对依赖于 VSTest 协议和适配器的 Visual Studio 及其他工具的成熟集成。 在Visual Studio和Visual Studio Code的应用场景中受支持,生态系统内的部分功能正在进行持续的集成工作。
CI 和外部工具 长期使用的Microsoft和非Microsoft工具及任务的广泛支持。 在Azure DevOps中,可以使用 VSTest 任务(VSTest@3vstest.console)或.NET任务(DotNetCoreCLI@2dotnet test)。 在 CI 和新式.NET工作流中工作,但某些第三方集成可能仍落后于 VSTest。 在Azure DevOps中,使用.NET任务(DotNetCoreCLI@2dotnet test)。
行为 默认 VSTest 模式。 VSTest 参数和行为适用。 .NET 10 SDK 及更高版本支持原生 MTP 模式。

有关 的模式和参数的完整详细信息,请参阅 使用 。

从测试框架开始

如果选择 VSTest

  • MSTest: 使用 MSTest 运行测试
  • NUnit:NUnit 和 Microsoft.Testing.Platform
  • xUnit.net: xUnit.net 入门
  • TUnit:VSTest 不支持。 使用 Microsoft.Testing.Platform。

如果选择 Microsoft.Testing.Platform

  • MSTest: 使用 MSTest 运行测试
  • NUnit:NUnit 中的 Microsoft.Testing.Platform 支持(NUnit 运行器)
  • xUnit.net: Microsoft测试平台(xUnit.net v3)
  • TUnit: TUnit 文档

后续步骤

  • 了解 MTP 概念: Microsoft.Testing.Platform 概述
  • 了解 VSTest 选项: VSTest 选项
  • 从 VSTest 迁移: 从 VSTest 迁移到 Microsoft.Testing.Platform
  • 添加功能: Microsoft.Testing.Platform 功能