Skip to content

Improve test platforms docs#51854

Open
Evangelink wants to merge 8 commits intomainfrom
dev/amauryleve/mtp-docs
Open

Improve test platforms docs#51854
Evangelink wants to merge 8 commits intomainfrom
dev/amauryleve/mtp-docs

Conversation

@Evangelink
Copy link
Member

@Evangelink Evangelink commented Feb 24, 2026

Summary

Explain what are test platforms and how to choose the one to use. Add links to the test frameworks, because that's what people know and will use.

Also refactor MTP doc so that it's easier to browse and look for the info.


Internal previews

Toggle expand/collapse
📄 File 🔗 Preview link
docs/core/project-sdk/msbuild-props.md MSBuild reference for .NET SDK projects
docs/core/testing/index.md Testing in .NET
docs/core/testing/microsoft-testing-platform-architecture-capabilities.md Microsoft.Testing.Platform capabilities
docs/core/testing/microsoft-testing-platform-architecture-extensions.md Build extensions
docs/core/testing/microsoft-testing-platform-architecture-services.md docs/core/testing/microsoft-testing-platform-architecture-services
docs/core/testing/microsoft-testing-platform-architecture-test-framework.md Build a test framework
docs/core/testing/microsoft-testing-platform-architecture.md Create custom extensions for Microsoft.Testing.Platform
docs/core/testing/microsoft-testing-platform-cli-options.md Microsoft.Testing.Platform CLI options reference
docs/core/testing/microsoft-testing-platform-code-coverage.md docs/core/testing/microsoft-testing-platform-code-coverage
docs/core/testing/microsoft-testing-platform-crash-hang-dumps.md Crash and hang dumps
docs/core/testing/microsoft-testing-platform-extensions-vstest-bridge.md Microsoft.Testing.Platform VSTest bridge extension
docs/core/testing/microsoft-testing-platform-fakes.md Microsoft Fakes
docs/core/testing/microsoft-testing-platform-features.md docs/core/testing/microsoft-testing-platform-features
docs/core/testing/microsoft-testing-platform-hot-reload.md Hot Reload
docs/core/testing/microsoft-testing-platform-intro.md Microsoft.Testing.Platform overview
docs/core/testing/microsoft-testing-platform-open-telemetry.md OpenTelemetry
docs/core/testing/microsoft-testing-platform-retry.md docs/core/testing/microsoft-testing-platform-retry
docs/core/testing/microsoft-testing-platform-run-and-debug.md Run and debug tests
docs/core/testing/microsoft-testing-platform-telemetry.md Microsoft.Testing.Platform telemetry
docs/core/testing/microsoft-testing-platform-terminal-output.md Terminal output
docs/core/testing/microsoft-testing-platform-test-reports.md docs/core/testing/microsoft-testing-platform-test-reports
docs/core/testing/microsoft-testing-platform-troubleshooting.md Microsoft.Testing.Platform troubleshooting
docs/core/testing/migrating-vstest-microsoft-testing-platform.md Migration guide from VSTest to Microsoft.Testing.Platform
docs/core/testing/test-platforms-overview.md Test platforms overview for .NET
docs/core/testing/unit-testing-mstest-running-tests.md docs/core/testing/unit-testing-mstest-running-tests
docs/core/testing/unit-testing-mstest-sdk.md MSTest SDK configuration
docs/core/testing/unit-testing-nunit-runner-intro.md Microsoft.Testing.Platform support in NUnit (NUnit runner)
docs/core/tools/dotnet-test-mtp.md dotnet test command with Microsoft.Testing.Platform
docs/navigate/devops-testing/index.yml docs/navigate/devops-testing/index
docs/navigate/devops-testing/toc.yml docs/navigate/devops-testing/toc

@Evangelink Evangelink marked this pull request as ready for review February 26, 2026 21:13
@Evangelink Evangelink requested review from a team, gewarren and meaghanlewis as code owners February 26, 2026 21:13
Copilot AI review requested due to automatic review settings February 26, 2026 21:13
@Evangelink Evangelink enabled auto-merge (squash) February 26, 2026 21:13
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR refactors the Microsoft.Testing.Platform (MTP) documentation to improve navigation and organization. It shifts from an extension-centric structure to a feature-centric structure, making it easier for users to find the information they need based on their goals rather than navigating through generic "extensions" categories.

Changes:

  • Adds new test platforms overview page to help users choose between VSTest and MTP
  • Reorganizes MTP documentation from extension categories to feature-specific pages (terminal output, test reports, code coverage, crash/hang dumps, retry, hot reload, fakes, OpenTelemetry, telemetry)
  • Creates consolidated CLI options reference page
  • Merges exit codes and FAQ content into unified troubleshooting page
  • Splits architecture documentation into separate pages for test frameworks vs extensions
  • Updates TOC for better navigation hierarchy
  • Establishes comprehensive redirects for all renamed/deleted pages

Reviewed changes

Copilot reviewed 40 out of 40 changed files in this pull request and generated no comments.

Show a summary per file
File Description
docs/core/testing/test-platforms-overview.md New overview page to help users choose between VSTest and MTP platforms
docs/core/testing/microsoft-testing-platform-features.md New feature overview page replacing generic extensions page
docs/core/testing/microsoft-testing-platform-cli-options.md New consolidated CLI reference replacing scattered option documentation
docs/core/testing/microsoft-testing-platform-troubleshooting.md New troubleshooting page consolidating exit codes and FAQ
docs/core/testing/microsoft-testing-platform-terminal-output.md Feature-specific page extracted from extensions-output.md
docs/core/testing/microsoft-testing-platform-test-reports.md Feature-specific page extracted from extensions-test-reports.md
docs/core/testing/microsoft-testing-platform-code-coverage.md Feature-specific page extracted from extensions-code-coverage.md
docs/core/testing/microsoft-testing-platform-crash-hang-dumps.md Feature-specific page extracted from extensions-diagnostics.md
docs/core/testing/microsoft-testing-platform-retry.md Feature-specific page extracted from extensions-policy.md
docs/core/testing/microsoft-testing-platform-hot-reload.md Feature-specific page extracted from extensions-hosting.md
docs/core/testing/microsoft-testing-platform-fakes.md Feature-specific page from extensions-fakes.md
docs/core/testing/microsoft-testing-platform-open-telemetry.md New OpenTelemetry feature page
docs/core/testing/microsoft-testing-platform-telemetry.md Updated telemetry page with auto-registration info
docs/core/testing/microsoft-testing-platform-run-and-debug.md Extracted run/debug content from intro page
docs/core/testing/microsoft-testing-platform-architecture-test-framework.md Separated test framework architecture from extensions
docs/core/testing/microsoft-testing-platform-architecture-extensions.md Refocused on extensions architecture only
docs/core/testing/microsoft-testing-platform-intro.md Streamlined overview with navigation to other pages
docs/core/testing/migrating-vstest-microsoft-testing-platform.md Updated links and fixed missing quote
docs/navigate/devops-testing/toc.yml Reorganized TOC structure to match new organization
.openpublishing.redirection.core.json Added comprehensive redirects for all moved/renamed pages
Various other files Updated internal links to point to renamed pages

Copy link
Contributor

@meaghanlewis meaghanlewis left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These changes LGTM. Left a handful of suggestions for you to consider.


Specifies the name of the response file. The response file name must immediately follow the @ character with no white space between the @ character and the response file name.

Options in a response file are interpreted as if they were present at that place in the command line. Each argument in a response file must begin and end on the same line. You cannot use the backslash character (\) to concatenate lines. Using a response file helps for very long commands that might exceed the terminal limits. You can combine a response file with inline command-line arguments. For example:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Options in a response file are interpreted as if they were present at that place in the command line. Each argument in a response file must begin and end on the same line. You cannot use the backslash character (\) to concatenate lines. Using a response file helps for very long commands that might exceed the terminal limits. You can combine a response file with inline command-line arguments. For example:
Options in a response file are interpreted as if they were present at that place in the command line. Each argument in a response file must begin and end on the same line. You can't use the backslash character `\` to concatenate lines. Using a response file helps for very long commands that might exceed the terminal limits. You can combine a response file with inline command-line arguments. For example:


- **`@`**

Specifies the name of the response file. The response file name must immediately follow the @ character with no white space between the @ character and the response file name.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Specifies the name of the response file. The response file name must immediately follow the @ character with no white space between the @ character and the response file name.
Specifies the name of the response file. The response file name must immediately follow the `@` character with no white space between the `@` character and the response file name.


- **`--diagnostic-synchronous-write`**

Forces the built-in file logger to synchronously write logs. Useful for scenarios where you don't want to lose any log entries (if the process crashes). This does slow down the test execution.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Forces the built-in file logger to synchronously write logs. Useful for scenarios where you don't want to lose any log entries (if the process crashes). This does slow down the test execution.
Forces the built-in file logger to synchronously write logs. Useful for scenarios where you don't want to lose any log entries (if the process crashes). This slows down the test execution.


- **`--list-tests`**

List available tests. Tests will not be executed.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
List available tests. Tests will not be executed.
List available tests. Tests won't be executed.

These features require installing additional NuGet packages, as described in each section.

> [!TIP]
> When using [Microsoft.Testing.Platform.MSBuild](https://www.nuget.org/packages/Microsoft.Testing.Platform.MSBuild) (included transitively by MSTest, NUnit, and xUnit runners), these extensions are auto-registered when you install their NuGet packages — no code changes needed. The manual registration below is only required if you disabled the auto-generated entry point by setting `<GenerateTestingPlatformEntryPoint>false</GenerateTestingPlatformEntryPoint>`.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
> When using [Microsoft.Testing.Platform.MSBuild](https://www.nuget.org/packages/Microsoft.Testing.Platform.MSBuild) (included transitively by MSTest, NUnit, and xUnit runners), these extensions are auto-registered when you install their NuGet packages — no code changes needed. The manual registration below is only required if you disabled the auto-generated entry point by setting `<GenerateTestingPlatformEntryPoint>false</GenerateTestingPlatformEntryPoint>`.
> When using [Microsoft.Testing.Platform.MSBuild](https://www.nuget.org/packages/Microsoft.Testing.Platform.MSBuild) (included transitively by MSTest, NUnit, and xUnit runners), these extensions are auto-registered when you install their NuGet packages — no code changes needed. The manual registration specified in this article is only required if you disabled the auto-generated entry point by setting `<GenerateTestingPlatformEntryPoint>false</GenerateTestingPlatformEntryPoint>`.


- Find command-line switches in one place: [Microsoft.Testing.Platform CLI options reference](./microsoft-testing-platform-cli-options.md)
- Add capabilities to your test runs: use the feature pages in this article.
- Create your own extension: [Microsoft.Testing.Platform architecture](./microsoft-testing-platform-architecture.md), [Extension points](./microsoft-testing-platform-architecture-extensions.md), and [Services](./microsoft-testing-platform-architecture-services.md)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- Create your own extension: [Microsoft.Testing.Platform architecture](./microsoft-testing-platform-architecture.md), [Extension points](./microsoft-testing-platform-architecture-extensions.md), and [Services](./microsoft-testing-platform-architecture-services.md)
- Create your own extension: [Microsoft.Testing.Platform architecture](./microsoft-testing-platform-architecture.md), [Extension points](./microsoft-testing-platform-architecture-extensions.md), and [Services](./microsoft-testing-platform-architecture-services.md).

This feature requires the [Microsoft.Testing.Extensions.HotReload](https://nuget.org/packages/Microsoft.Testing.Extensions.HotReload) NuGet package.

> [!TIP]
> When using [Microsoft.Testing.Platform.MSBuild](https://www.nuget.org/packages/Microsoft.Testing.Platform.MSBuild) (included transitively by MSTest, NUnit, and xUnit runners), this extension is auto-registered when you install its NuGet package — no code changes needed. The manual registration below is only required if you disabled the auto-generated entry point by setting `<GenerateTestingPlatformEntryPoint>false</GenerateTestingPlatformEntryPoint>`.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
> When using [Microsoft.Testing.Platform.MSBuild](https://www.nuget.org/packages/Microsoft.Testing.Platform.MSBuild) (included transitively by MSTest, NUnit, and xUnit runners), this extension is auto-registered when you install its NuGet package — no code changes needed. The manual registration below is only required if you disabled the auto-generated entry point by setting `<GenerateTestingPlatformEntryPoint>false</GenerateTestingPlatformEntryPoint>`.
> When using [Microsoft.Testing.Platform.MSBuild](https://www.nuget.org/packages/Microsoft.Testing.Platform.MSBuild) (included transitively by MSTest, NUnit, and xUnit runners), this extension is auto-registered when you install its NuGet package — no code changes needed. The manual registration specified in this article is only required if you disabled the auto-generated entry point by setting `<GenerateTestingPlatformEntryPoint>false</GenerateTestingPlatformEntryPoint>`.

This feature requires the [Microsoft.Testing.Extensions.Retry](https://nuget.org/packages/Microsoft.Testing.Extensions.Retry) NuGet package.

> [!TIP]
> When using [Microsoft.Testing.Platform.MSBuild](https://www.nuget.org/packages/Microsoft.Testing.Platform.MSBuild) (included transitively by MSTest, NUnit, and xUnit runners), this extension is auto-registered when you install its NuGet package — no code changes needed. The manual registration below is only required if you disabled the auto-generated entry point by setting `<GenerateTestingPlatformEntryPoint>false</GenerateTestingPlatformEntryPoint>`.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
> When using [Microsoft.Testing.Platform.MSBuild](https://www.nuget.org/packages/Microsoft.Testing.Platform.MSBuild) (included transitively by MSTest, NUnit, and xUnit runners), this extension is auto-registered when you install its NuGet package — no code changes needed. The manual registration below is only required if you disabled the auto-generated entry point by setting `<GenerateTestingPlatformEntryPoint>false</GenerateTestingPlatformEntryPoint>`.
> When using [Microsoft.Testing.Platform.MSBuild](https://www.nuget.org/packages/Microsoft.Testing.Platform.MSBuild) (included transitively by MSTest, NUnit, and xUnit runners), this extension is auto-registered when you install its NuGet package — no code changes needed. The manual registration in the following section is only required if you disabled the auto-generated entry point by setting `<GenerateTestingPlatformEntryPoint>false</GenerateTestingPlatformEntryPoint>`.

This feature requires the [Microsoft.Testing.Extensions.Telemetry](https://nuget.org/packages/Microsoft.Testing.Extensions.Telemetry) NuGet package.

> [!TIP]
> When using [Microsoft.Testing.Platform.MSBuild](https://www.nuget.org/packages/Microsoft.Testing.Platform.MSBuild) (included transitively by MSTest, NUnit, and xUnit runners), this extension is auto-registered when you install its NuGet package — no code changes needed. The manual registration below is only required if you disabled the auto-generated entry point by setting `<GenerateTestingPlatformEntryPoint>false</GenerateTestingPlatformEntryPoint>`.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
> When using [Microsoft.Testing.Platform.MSBuild](https://www.nuget.org/packages/Microsoft.Testing.Platform.MSBuild) (included transitively by MSTest, NUnit, and xUnit runners), this extension is auto-registered when you install its NuGet package — no code changes needed. The manual registration below is only required if you disabled the auto-generated entry point by setting `<GenerateTestingPlatformEntryPoint>false</GenerateTestingPlatformEntryPoint>`.
> When using [Microsoft.Testing.Platform.MSBuild](https://www.nuget.org/packages/Microsoft.Testing.Platform.MSBuild) (included transitively by MSTest, NUnit, and xUnit runners), this extension is auto-registered when you install its NuGet package — no code changes needed. The manual registration in the following section is only required if you disabled the auto-generated entry point by setting `<GenerateTestingPlatformEntryPoint>false</GenerateTestingPlatformEntryPoint>`.

These features require installing additional NuGet packages, as described in each section.

> [!TIP]
> When using [Microsoft.Testing.Platform.MSBuild](https://www.nuget.org/packages/Microsoft.Testing.Platform.MSBuild) (included transitively by MSTest, NUnit, and xUnit runners), these extensions are auto-registered when you install their NuGet packages — no code changes needed. The manual registration below is only required if you disabled the auto-generated entry point by setting `<GenerateTestingPlatformEntryPoint>false</GenerateTestingPlatformEntryPoint>`.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
> When using [Microsoft.Testing.Platform.MSBuild](https://www.nuget.org/packages/Microsoft.Testing.Platform.MSBuild) (included transitively by MSTest, NUnit, and xUnit runners), these extensions are auto-registered when you install their NuGet packages — no code changes needed. The manual registration below is only required if you disabled the auto-generated entry point by setting `<GenerateTestingPlatformEntryPoint>false</GenerateTestingPlatformEntryPoint>`.
> When using [Microsoft.Testing.Platform.MSBuild](https://www.nuget.org/packages/Microsoft.Testing.Platform.MSBuild) (included transitively by MSTest, NUnit, and xUnit runners), these extensions are auto-registered when you install their NuGet packages — no code changes needed. The manual registration specified in this article is only required if you disabled the auto-generated entry point by setting `<GenerateTestingPlatformEntryPoint>false</GenerateTestingPlatformEntryPoint>`.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants