Skip to main content

platform-detection

Reference data for detecting the test platform (VSTest vs Microsoft.Testing.Platform) and test framework (MSTest, xUnit, NUnit, TUnit) from project files. DO NOT USE directly — loaded by run-tests, mtp-hot-reload, and migrate-vstest-to-mtp when they need detection logic.

Datos de origen

Repositorio
managedcode/LlmTestServer
Última actividad en el origen
7 de julio de 2026 a las 11:34
Idioma detectado de SKILL.md
inglés
Estrellas
1
Forks
0

Opciones de instalación

De forma predeterminada está seleccionado el prompt que primero revisa el origen. Puedes cambiar a un comando directo o descargar una copia local.

Revisa los archivos de origen

Lee SKILL.md y los archivos complementarios que muestra SkillsMP antes de decidir si quieres instalarlo.

Explorador de archivos
2 archivos

Mostrando SKILL.md

SKILL.md
Instrucciones de origen · Vista previa de solo lectura
name
platform-detection
description
Reference data for detecting the test platform (VSTest vs Microsoft.Testing.Platform) and test framework (MSTest, xUnit, NUnit, TUnit) from project files. DO NOT USE directly — loaded by run-tests, mtp-hot-reload, and migrate-vstest-to-mtp when they need detection logic.
user-invocable
false
disable-model-invocation
true
license
MIT
# Test Platform and Framework Detection Determine **which test platform** (VSTest or Microsoft.Testing.Platform) and **which test framework** (MSTest, xUnit, NUnit, TUnit) a project uses. **Detection files to always check** (in order): `global.json` → `.csproj` → `Directory.Build.props` → `Directory.Packages.props` ## Detecting the test framework Read the `.csproj` file **and** `Directory.Build.props` / `Directory.Packages.props` (for centrally managed dependencies) and look for: | Package or SDK reference | Framework | |--------------------------|-----------| | `MSTest` (metapackage, recommended) or `<Sdk Name="MSTest.Sdk">` | MSTest | | `MSTest.TestFramework` + `MSTest.TestAdapter` | MSTest (also valid for v3/v4) | | `xunit`, `xunit.v3`, `xunit.v3.mtp-v1`, `xunit.v3.mtp-v2`, `xunit.v3.core.mtp-v1`, `xunit.v3.core.mtp-v2` | xUnit | | `NUnit` + `NUnit3TestAdapter` | NUnit | | `TUnit` | TUnit (MTP only) | ## Detecting the test platform The detection logic depends on the .NET SDK version. Run `dotnet --version` to determine it. ### .NET SDK 10+ On .NET 10+, the `global.json` `test.runner` setting is the **authoritative source**: - If `global.json` contains `"test": { "runner": "Microsoft.Testing.Platform" }` → **MTP** - If `global.json` has `"runner": "VSTest"`, or no `test` section exists → **VSTest** > **Important**: On .NET 10+, `<TestingPlatformDotnetTestSupport>` alone does **not** switch to MTP. The `global.json` runner setting takes precedence. If the runner is VSTest (or unset), the project uses VSTest regardless of `TestingPlatformDotnetTestSupport`. ### .NET SDK 8 or 9 On older SDKs, check these signals in priority order: **1. Check the `<TestingPlatformDotnetTestSupport>` MSBuild property.** Look in the `.csproj`, `Directory.Build.props`, **and** `Directory.Packages.props`. If set to `true` in **any** of these files, the project uses **MTP**. > **Critical**: Always read `Directory.Build.props` and `Directory.Packages.props` if they exist. MTP properties are frequently set there instead of in the `.csproj`, so checking only the project file will miss them. **2. Check project-level signals:** | Signal | Platform | |--------|----------| | `<Sdk Name="MSTest.Sdk">` as project SDK | **MTP** by default | | `<UseMicrosoftTestingPlatformRunner>true</UseMicrosoftTestingPlatformRunner>` | **MTP** runner (xUnit) | | `<EnableMSTestRunner>true</EnableMSTestRunner>` | **MTP** runner (MSTest) | | `<EnableNUnitRunner>true</EnableNUnitRunner>` | **MTP** runner (NUnit) | | `Microsoft.Testing.Platform` package referenced directly | **MTP** | | `TUnit` package referenced | **MTP** (TUnit is MTP-only) | > **Note**: The presence of `Microsoft.NET.Test.Sdk` does **not** necessarily mean VSTest. Some frameworks (e.g., MSTest) pull it in transitively for compatibility, even when MTP is enabled. Do not use this package as a signal on its own — always check the MTP signals above first. > **Key distinction**: VSTest is the classic platform that uses `vstest.console` under the hood. Microsoft.Testing.Platform (MTP) is the newer, faster platform. Both can be invoked via `dotnet test`, but their filter syntax and CLI options differ.
Ver en GitHub