MSTest Runner 简介
Microsoft 推出了 MSTest Runner,这是一款专为 MSTest 测试设计的轻量级测试运行器。其主要目标是提高测试的可移植性、可靠性和速度,同时为用户提供可扩展的测试体验。
主要特点
- 独立可执行文件:MSTest Runner 作为独立的可移植可执行文件发布,无需依赖外部工具如
vstest.console、dotnet test或 Visual Studio 来执行测试。这使得它特别适合在资源有限的设备上进行测试开发。 - 广泛适用性:MSTest Runner 适用于不同技能水平的开发者和各种规模的项目,并从 MSTest.TestAdapter NuGet 3.2.0 版本开始随包提供。它与常见的测试环境集成,包括
dotnet test、vstest.console、Visual Studio Test Explorer 和 Visual Studio Code Test Explorer。 - 与 VSTest 的比较:MSTest Runner 在可移植性、性能、可靠性和可扩展性方面优于 VSTest。
核心优势
可移植性
MSTest Runner 通过直接从可执行文件运行测试,简化了测试执行过程,避免了传统测试基础设施的复杂性。开发者可以像处理普通项目一样处理测试项目,利用现有的 dotnet 工具在多台计算机上运行测试,而无需额外设置。
性能优化
MSTest Runner 优化了构建服务器上的资源使用,减少了一个进程并降低了进程间序列化通信的开销。微软内部项目采用该运行器后,观察到显著的 CPU 和内存使用减少,某些项目的测试速度提高了三倍,内存使用减少了四倍。
可靠性
MSTest Runner 引入了新的默认设置,优先考虑安全性,减少了意外遗漏测试执行的可能性。其架构避免了文件夹扫描、动态加载和反射检测扩展,确保了在本地和 CI 环境中的一致行为。此外,其异步和并行化设计最大限度地减少了挂起或死锁问题。
可扩展性
MSTest Runner 提供了灵活的扩展模型,允许用户扩展或覆盖测试执行的各个方面。该模型支持自定义报告生成器、测试编排、日志记录器和额外的命令行选项。微软提供了可选扩展列表,并表示正在努力为库添加更多功能。
社区反馈与未来计划
微软的博客公告引发了社区的积极讨论,开发者们对 MSTest Runner 的反馈总体非常正面。用户 Michael Taylor 询问了 Visual Studio 中 Test Explorer 的未来以及使用 VS Test 和 dotnet CLI 运行测试的管道问题。Jakub Jareš 详细回应,建议新 MSTest 项目使用 MSTest Runner,并计划更新 MSTest 模板以自动将其设为默认选项,同时提供 --disable-runner 参数供用户选择退出。
此外,用户 Michael Dietrich 询问了运行器与其他测试框架的兼容性。回应指出,虽然运行器目前仅支持 MSTest,但其构建在框架无关的构建块上,未来开发者可以通过投票和反馈推动对其他测试框架的支持。
其他信息
- NativeAOT 支持:微软计划为 MSTest Runner 添加 NativeAOT 支持。
- Docker 示例:开发者可以在 GitHub 上查看在无 dotnet SDK 的 Docker 容器中运行测试的示例。
- GitHub 仓库:更多项目详情和更新可访问官方 GitHub 仓库。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。