用途:在 Microsoft Testing Platform(MTP)项目中搭建并维持一个长期运行的测试宿主,编辑代码后自动重跑测试,用于迭代修复失败测试。仅适用于 MTP,不适用于 VSTest;也不适用于从零编写测试、诊断失败原因、Visual Studio/VS Code Test Explorer 热重载、CI/CD 配置或一次性运行。
主要能力:通过 Microsoft.Testing.Extensions.HotReload 扩展,在控制台模式下检测源码改动并自动重跑受影响测试。
使用方式:先检测项目是否为 MTP(VSTest 需停止该路径,可提供 dotnet watch --project <project-path> test 作为非 MTP 回退)。安装包:dotnet add <project-path> package Microsoft.Testing.Extensions.HotReload。启用热重载:设置环境变量 TESTINGPLATFORM_HOTRELOAD_ENABLED=1,或在 Properties/launchSettings.json 中配置。运行:dotnet run --project <project-path>,过滤测试在 -- 后传参,例如 MSTest/NUnit 用 --filter "FullyQualifiedName~TestMethodName",xUnit v3 用 --filter-method "TestMethodName",TUnit 用 --treenode-filter "//*/ClassName/TestMethodName"。宿主启动后保持运行,编辑源码即自动重跑。
限制:仅支持控制台模式,无 VS/VS Code Test Explorer 集成。方法签名变更、新增类型等不支持的热编辑(rude edit)无法应用到活动进程,需 Ctrl+C 停止、dotnet build 重建后以原命令重跑;也可用 dotnet watch 配合 DOTNET_WATCH_RESTART_ON_RUDE_EDIT=1 实现重启回退。不要用 dotnet watch run 替代常规 MTP 路径。完成后停止宿主,如需一次性验证命令使用 run-tests。