用途:在 .NET 测试或 CI 从 VSTest 切换到 Microsoft.Testing.Platform(MTP)时,按仓库实际情况完成迁移,使测试项目运行在 MTP、dotnet test 正常工作、CI/CD 流水线同步更新。
主要能力:
- 先检查项目、Directory.Build.props、global.json 和 CI 文件,确认 SDK 模式:.NET 9 及更早使用兼容属性加 -- 分隔符;.NET 10 原生 MTP 通过 global.json 配置,去掉该属性并直接传 MTP 参数。
- 在 Directory.Build.props 集中设置 MTP 属性,按命名约定(如 MSBuildProjectName)定位测试项目,避免使用尚不可用的 IsTestProject。
- 按框架启用 runner:MSTest 用 EnableMSTestRunner 或 MSTest.Sdk;NUnit 用 NUnit3TestAdapter 5.0.0+ 与 EnableNUnitRunner;xUnit v2 用 YTest.MTP.XUnit2;xUnit v3 用 UseMicrosoftTestingPlatformRunner。
- 翻译 dotnet test 参数:如 --blame-crash 对应 --crashdump、-l trx 对应 --report-trx、--collect 覆盖对应 --coverage,并提示所需扩展包。
- xUnit v3 过滤器迁移到 --filter-class/--filter-method/--filter-trait 或 --filter-query。
- 更新 Azure DevOps 与 GitHub Actions:VSTest@3 换为 DotNetCoreCLI@2,并同步参数。
使用方式:提供项目或解决方案路径、测试框架、SDK 版本、CI 文件即可;路径通常可自动发现。实施时先跑 dotnet test 建立基线,再改配置并验证。
限制:不要在同一解决方案混用 VSTest 与 MTP 测试项目;不适用于已运行在 MTP 且无差异的情况、测试框架互迁、UWP/打包 WinUI 测试项目、混合 .NET 与非 .NET 适配器,以及 MSTest 版本升级。具体版本与价格等资料暂未提供。