用途:把 .NET 测试项目从 xUnit.net(v2 或 v3)迁移到 MSTest v4,产出仍能干净构建、通过相同测试、并保留原测试平台(VSTest 保持 VSTest,MTP 保持 MTP)的项目。这是跨框架迁移,不应与版本升级或平台切换合并进行;如需升级或切换,应先完成本迁移并提交,再单独执行 migrate-mstest-v3-to-v4 或 migrate-vstest-to-mtp。
主要能力:识别 xUnit 版本与当前测试平台;替换 xunit* / xunit.v3.* 包为 MSTest v4(MSTest 元包或 MSTest.Sdk 4.x);将 [Fact]/[Theory] 改写为 [TestMethod],[InlineData]/[MemberData]/[ClassData] 映射为 [DataRow]/[DynamicData];断言映射(如 Assert.Equal→Assert.AreEqual、Assert.Throws<T>→Assert.ThrowsExactly<T>、Assert.ThrowsAny<T>→Assert.Throws<T>);处理 Fixture 作用域、生命周期与并行化差异;提供映射速查表 references/mapping-cheatsheet.md。
使用方式:输入项目或解决方案路径(必需),构建与测试命令可选(自动检测)。先做机械改写,再处理需判断的部分;按步骤提交以便审查。常用命令保持原样,如 dotnet build、dotnet test。
适用场景:项目引用 xunit、xunit.assert、xunit.core、xunit.abstractions 或 xunit.v3.* 等包并希望改用 MSTest;或解决方案中混用 xUnit 与 MSTest,希望统一为单一框架。
限制:MSTest v4 支持 net8.0、net9.0、net462+、netstandard2.0(仅测试库)、uap10.0.16299、net8.0-windows10.0.18362.0、net9.0-windows10.0.17763.0;不支持 .NET Core 3.1 与 net5.0-net7.0,需先升级 TFM 或改用 MSTest v3。MSTest 默认串行执行,需显式 [assembly: Parallelize(...)] 才能匹配 xUnit 的并行行为。自定义 DataAttribute/FactAttribute、Record.Exception、事件断言等需手动转换。具体收费、价格与效果资料暂未提供。