SuperAPI AI 工具集

platform-detection

数据与分析

查看项目

更新于 10-16 06:47

技能介绍

用途:判断一个 .NET 项目使用哪种测试平台(VSTest 或 Microsoft.Testing.Platform,简称 MTP)以及哪种测试框架(MSTest、xUnit、NUnit、TUnit)。

检测顺序:依次检查 global.json → .csproj → Directory.Build.props → Directory.Packages.props。

框架检测:在 .csproj 及 Directory.Build.props / Directory.Packages.props 中查找包或 SDK 引用。MSTest 对应 MSTest 元包或 <Sdk Name="MSTest.Sdk">,或 MSTest.TestFramework + MSTest.TestAdapter;xUnit 对应 xunit、xunit.v3、xunit.v3.mtp-v1、xunit.v3.mtp-v2、xunit.v3.core.mtp-v1、xunit.v3.core.mtp-v2;NUnit 对应 NUnit + NUnit3TestAdapter;TUnit 对应 TUnit(仅 MTP)。

平台检测:先运行 dotnet --version 确定 SDK 版本。.NET SDK 10+ 时,global.json 的 test.runner 为权威依据:设为 Microsoft.Testing.Platform 即 MTP;设为 VSTest 或无 test 段即 VSTest。注意此时仅靠 <TestingPlatformDotnetTestSupport> 不能切换到 MTP。.NET SDK 8 或 9 时按优先级检查:先看 <TestingPlatformDotnetTestSupport> 是否为 true(需同时读 Directory.Build.props 和 Directory.Packages.props,该属性常设在此处);再看项目级信号,如 <Sdk Name="MSTest.Sdk">(默认 MTP)、<UseMicrosoftTestingPlatformRunner>true</UseMicrosoftTestingPlatformRunner>(xUnit)、<EnableMSTestRunner>true</EnableMSTestRunner>(MSTest)、<EnableNUnitRunner>true</EnableNUnitRunner>(NUnit)、直接引用 Microsoft.Testing.Platform 包、引用 TUnit 包。

限制:Microsoft.NET.Test.Sdk 的存在不一定代表 VSTest,部分框架会为兼容性传递引入,不能单独作为判断依据。VSTest 是经典平台,底层使用 vstest.console;MTP 是较新的平台。两者都可通过 dotnet test 调用,但筛选语法和 CLI 选项不同。资料未提供更多安装或使用步骤。