Поделиться через


Обзор платформ тестирования для .NET

В .NET платформа тестирования и тестовая платформа являются разными компонентами, которые работают вместе для обнаружения и выполнения тестов.

  • Платформа тестирования определяет тестовую модель, на которые вы пишете, например MSTest, NUnit, xUnit.net или TUnit.
  • Тестовая платформа выполняет тесты, интегрируется с idEs и CLI и предоставляет общие точки расширения.

Вы можете выбрать между двумя тестовых платформами:

  • VSTest
  • Microsoft.Testing.Platform (MTP)

Подсказка

Для самой простой настройки выберите одну платформу для репозитория и настройте тестовые проекты, CI и средства согласованно для этой платформы. Не комбинируйте тестовые проекты на основе VSTest и Microsoft.Testing.Platform в одном решении или конфигурации запуска, так как этот сценарий не поддерживается. Если вы также запускаете тесты, отличные от .NET, которые зависят от VSTest (например, тестов C++ или JavaScript), выполните эти тесты в отдельных конфигурациях от .NET тестов на основе MTP.

Выбор платформы

Используйте следующие сценарии для быстрого выбора.

Сценарий использования Выбрать Почему
Вам нужны сценарии выполнения тестов с использованием Native AOT или оптимизации. Microsoft.Testing.Platform MTP поддерживает эти современные сценарии развертывания, в то время как VSTest не поддерживает.
Вы создаете упакованные тестовые проекты WinUI или UWP. VSTest Эти типы проектов в настоящее время не поддерживаются MTP.
Необходимо смешивать .NET тесты и адаптеры, отличные от .NET (например, адаптеры JavaScript или C++). VSTest VSTest поддерживает адаптеры для смешанных языков, а MTP предназначен только для .NET.
Вы хотите, чтобы тестовые проекты выполнялись как обычные исполняемые файлы (dotnet runпрямой запуск исполняемого файла, dotnet watchа также потоки F5 для запуска проекта). Microsoft.Testing.Platform MTP ориентирован на выполнение, поэтому тестовые приложения запускаются как стандартные .NET приложения в рабочих процессах на локальной машине и CI (непрерывной интеграции).
Вы полагаетесь на давно установленные интеграции в существующих инструментах и системах. VSTest VSTest имеет самую длительную историю совместимости в существующих продуктах, задачах и конвейерах. Поддержка MTP растет в экосистеме, но некоторые интеграции могут отстать от VSTest.
Вы предпочитаете строгое поведение по умолчанию и явное поведение. Microsoft.Testing.Platform MTP способствует детерминированному выполнению с упрощенной моделью расширения и регистрацией времени сборки. Например, он может завершиться ошибкой при отсутствии тестов, уменьшении зависимости среды и отключении отдельных расширений для каждой среды.
Вы предпочитаете более мягкие, широкие значения по умолчанию с обратной совместимостью. VSTest Обе платформы заботятся о обратной совместимости. VSTest определяет приоритеты по умолчанию, ориентированные на совместимость для различных существующих цепочк инструментов, а MTP обеспечивает обратную совместимость в собственной модели расширения.
Вы заблокированы проблемой или поведением, характерным для VSTest, в вашем текущем рабочем процессе. Microsoft.Testing.Platform Во многих сценариях один и тот же рабочий процесс не затрагивается при перемещении в MTP из-за различий в модели среды выполнения и архитектуре расширения.

Если конкретный вариант использования не указан, обе платформы являются подходящими выборами.

Поддержка интеграции и инструментов

Область интеграции VSTest Microsoft.Testing.Platform
Интеграция с IDE Зрелая интеграция между Visual Studio и другими средствами, зависящими от протокола VSTest и адаптеров. Поддерживается в сценариях Visual Studio и Visual Studio Code с текущей интеграцией в частях экосистемы.
CI и внешние инструменты Широкая поддержка как в уже давно используемых инструментах и задачах Microsoft, так и в сторонних средствах. В Azure DevOps можно использовать задачу VSTest (VSTest@3, vstest.console) или задачу .NET (DotNetCoreCLI@2, dotnet test). Работает в рабочих процессах CI и современных .NET, но некоторые сторонние интеграции могут по-прежнему отстать от VSTest. В Azure DevOps используйте задачу .NET (DotNetCoreCLI@2, dotnet test).
dotnet test Поведение Режим VSTest по умолчанию. Применяются аргументы и поведение VSTest. Собственный режим MTP доступен в .NET 10 SDK и более поздних версий.

Полные сведения о режимах и аргументах см. в dotnet test".

Начало работы с тестовой платформы

Если выбрать VSTest

Если выбрать Microsoft.Testing.Platform

Дальнейшие шаги