SuperAPI AI 工具集

mtp-hot-reload

测试与质量

查看项目

更新于 10-16 06:47

技能介绍

用途:在修复失败测试时,利用 Microsoft Testing Platform(MTP)热重载快速迭代,无需每次改动都重新构建。适用于已有失败测试、想加快测试修复循环,或需要在项目中配置 MTP 热重载的场景。不适用于从零编写新测试、诊断测试失败原因、配置 CI/CD,或使用 VSTest 的项目(热重载要求 MTP)。

主要能力:安装 Microsoft.Testing.Extensions.HotReload 包后,测试宿主启动并保持运行,检测到测试代码或生产代码改动时自动重跑受影响的测试,并在控制台显示更新结果。使用 Microsoft.Testing.Platform.MSBuild(MSTest、NUnit、xUnit 运行器会间接引入)时,安装该 NuGet 包即自动注册,无需改代码。

使用方式:先确认项目使用 MTP 而非 VSTest。安装扩展:dotnet add <project-path> package Microsoft.Testing.Extensions.HotReload。启用热重载需将环境变量 TESTINGPLATFORM_HOTRELOAD_ENABLED 设为 1,可在 shell 中设置(PowerShell:$env:TESTINGPLATFORM_HOTRELOAD_ENABLED = "1";bash/zsh:export TESTINGPLATFORM_HOTRELOAD_ENABLED=1),或写入 Properties/launchSettings.json 的 environmentVariables。随后用 dotnet run --project <project-path> 直接运行测试项目(不要用 dotnet test),可在 -- 后传过滤参数,例如 MSTest/NUnit 用 --filter "FullyQualifiedName~TestMethodName",xUnit v3 用 --filter-method "TestMethodName",TUnit 用 --treenode-filter "//*/ClassName/TestMethodName"。编辑代码后宿主自动重跑,重复直至通过。完成后 Ctrl+C 停止,再运行完整 dotnet test 确认干净构建下全部通过。

限制:热重载目前仅支持控制台模式,不支持 Visual Studio 或 VS Code 的 Test Explorer。部分改动(如新增类型、修改方法签名等 rude edits)需要重启宿主。必须使用 dotnet run 而非 dotnet test,且需正确设置环境变量。项目若使用 VSTest,需先迁移到 MTP 或改用 VS 内置 Test Explorer 热重载。