在.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@3、vstest.console)或.NET任务(DotNetCoreCLI@2、dotnet test)。 |
在 CI 和新式.NET工作流中工作,但某些第三方集成可能仍落后于 VSTest。 在Azure DevOps中,使用.NET任务(DotNetCoreCLI@2,dotnet 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 功能