微软推出全新MSTest运行器:可移植性、可靠性、可扩展性及更多

MSTest Runner 简介

Microsoft 推出了 MSTest Runner,这是一款专为 MSTest 测试设计的轻量级测试运行器。其主要目标是提高测试的可移植性、可靠性和速度,同时为用户提供可扩展的测试体验。

主要特点

  1. 独立可执行文件:MSTest Runner 作为独立的可移植可执行文件发布,无需依赖外部工具如 vstest.consoledotnet test 或 Visual Studio 来执行测试。这使得它特别适合在资源有限的设备上进行测试开发。
  2. 广泛适用性:MSTest Runner 适用于不同技能水平的开发者和各种规模的项目,并从 MSTest.TestAdapter NuGet 3.2.0 版本开始随包提供。它与常见的测试环境集成,包括 dotnet testvstest.console、Visual Studio Test Explorer 和 Visual Studio Code Test Explorer。
  3. 与 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 仓库
阅读 27
0 条评论