用途:在 .NET 项目中运行测试。该技能先判断项目使用的测试平台(VSTest 或 Microsoft.Testing.Platform,简称 MTP)与测试框架,再执行 dotnet test,并按需应用过滤条件运行测试子集。
主要能力:识别平台与框架;按平台和 SDK 版本选择正确的命令写法;支持过滤表达式、目标框架、TRX 报告、代码覆盖率、blame 崩溃/挂起诊断等参数;当用户指定测试类别(如集成测试、冒烟测试)时,转换为对应过滤条件而非运行全部测试。
检测方式:依次检查 global.json、.csproj、Directory.Build.props、Directory.Packages.props。global.json 中 "test": { "runner": "Microsoft.Testing.Platform" } 表示 SDK 10+ 上的 MTP;csproj 或 Directory.Build.props 中 <TestingPlatformDotnetTestSupport>true 表示 SDK 8/9 上的 MTP;两者都没有则为 VSTest。
命令要点:VSTest 用 dotnet test [<path>] [--filter <expr>] [--logger trx];MTP 在 SDK 8/9 需用 -- 分隔,如 dotnet test -- --report-trx;SDK 10+ 直接传参,如 dotnet test --project <path> --report-trx,且不接受裸位置路径,需用 --project 或 --solution。--framework、--no-build、--configuration、--verbosity 等 dotnet test/MSBuild 参数始终放在 -- 之前。
过滤:VSTest 及 MTP 下的 MSTest、NUnit 使用 --filter 表达式;MTP 下 xUnit v3 使用 --filter-class、--filter-method、--filter-trait;TUnit 使用 --treenode-filter。
限制:不用于编写测试代码、VSTest 到 MTP 迁移、热重载、CI/CD 配置或调试测试;部分 MTP 参数依赖对应扩展包(如 TrxReport、HangDump、CrashDump、CodeCoverage),未引用时参数不被识别。资料未提供收费、价格与平台支持信息。