Обзор Microsoft.Testing.Platform (MTP)

Microsoft. Testing.Platform (MTP) — это упрощенная и переносимая альтернатива VSTest для выполнения тестов во всех контекстах, включая конвейеры непрерывной интеграции (CI), CLI, Visual Studio обозреватель тестов и обозреватель тестов VS Code. MTP внедряется непосредственно в тестовые проекты, и нет других зависимостей приложений, таких как vstest.console или dotnet test необходимые для выполнения тестов.

Совет

Если вам нужна помощь в выборе между VSTest и MTP, начните с обзора платформ тестирования.

Используйте эту статью, когда вы уже решили использовать MTP и хотите понять ее модель, возможности и рабочее поведение.

MTP открытый код. Код Microsoft.Testing.Platform можно найти в репозитории microsoft/testfx GitHub.

Начните здесь

Используйте следующий путь в зависимости от того, что вам нужно дальше.

Основы MTP

Эта новая платформа тестирования основана на опыте команды по тестированию опыта разработчиков .NET и направлена на решение проблем, возникших со времени выпуска .NET Core в 2016 году. Хотя существует высокий уровень совместимости между платформой .NET Framework и .NET Core/.NET, некоторые ключевые функции, такие как плагин-система, и новые возможные форм-факторы компиляции .NET затруднили развитие или полноценную поддержку новой функции выполнения в рамках текущей архитектуры платформы VSTest.

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

  • детерминированность. Обеспечение того, что выполнение одних и того же теста в разных контекстах (local, CI) приведет к тому же результату. Новая среда выполнения не зависит от отражения или других функций динамической .NET среды выполнения для координации тестового выполнения.

  • прозрачность среды выполнения: Среда выполнения тестирования не вмешивается в код платформы тестирования, она не создает изолированные контексты, такие как AppDomain или AssemblyLoadContext, и не использует рефлексию или пользовательские средства разрешения сборок.

  • Регистрация расширений во время компиляции: расширения, такие как тестовые фреймворки и внутр- и внепроцессные расширения, регистрируются во время компиляции, чтобы обеспечить детерминизм и упростить обнаружение несоответствий.

  • Нулевые зависимости: Ядро платформы — это одна сборка .NET, Microsoft.Testing.Platform.dll, которая не имеет других зависимостей, кроме поддерживаемых сред выполнения.

  • Hostable: среда выполнения тестирования может размещаться в любом приложении .NET. Хотя консольное приложение обычно используется для выполнения тестов, вы можете создать тестовое приложение в любом типе .NET приложения. Это позволяет выполнять тесты в специальных контекстах, таких как устройства или браузеры, где могут быть ограничения.

  • Поддержка всех .NET форм-факторов: поддержка текущих и будущих .NET форм-факторов, включая нативный AOT.

  • Производительность: поиск правильного баланса между функциями и точками расширения, чтобы избежать раздувания среды выполнения с использованием несущественного кода. Новая тестовая платформа предназначена для "оркестрации" тестового запуска, а не предоставления подробностей о его выполнении.

  • Достаточно расширяемая: новая платформа построена на принципах расширяемости, чтобы обеспечить максимальную настройку выполнения в рабочем окружении. Он позволяет настроить узел тестового процесса, наблюдать за процессом тестирования и использовать сведения из платформы тестирования в процессе узла тестирования.

  • развертывание одного модуля. Функция хостинга позволяет использовать модель развертывания одного модуля, при которой один результат компиляции может поддерживать все точки расширяемости, как в режиме вне процесса, так и в режиме внутри процесса, без необходимости поставки различных исполняемых модулей.

Поддерживаемые платформы тестирования

Поддерживаемые целевые платформы

MTP поддерживает .NET (.NET 8 и более поздних версий), .NET Framework (версии 4.6.2 и более поздние версии) и предназначен для NETStandard 2.0 для обеспечения максимальной совместимости с другими средами выполнения.

Выполнение и отладка тестов

Подробные инструкции по запуску и отладке тестовых проектов MTP из CLI, Visual Studio, Visual Studio Code и CI pipelines см. в разделе Run and debug test.

Опции

Полный список параметров командной строки платформы и расширения см. в справочнике по параметрам интерфейса командной строки MTP.

Интеграция MSBuild

Пакет NuGet Microsoft. Testing.Platform.MSBuild предоставляет различные интеграции для MTP с MSBuild:

  • Поддержка dotnet test. Дополнительные сведения см. в разделе "Тестирование с помощью dotnet test".
  • Поддержка ProjectCapability, требуемая для Visual Studio и Visual Studio Code обозревателей тестов.
  • Автоматическое создание точки входа (методMain).
  • Автоматическое создание файла конфигурации.
  • Автоматическое обнаружение и регистрация установленных пакетов расширений.

Если этот пакет активен (по умолчанию для тестовых сред выполнения MSTest, NUnit и xUnit), всё, что нужно — это установка пакета NuGet расширения, так как расширения регистрируются автоматически, без изменений в коде. Если вы отключите автоматическую точку входа, задав параметр <GenerateTestingPlatformEntryPoint>false</GenerateTestingPlatformEntryPoint>, необходимо зарегистрировать расширения вручную в методе Main . Каждая страница расширения документирует свой вызов регистрации вручную.

Заметка

Эта интеграция работает в транзитивном режиме (проект, ссылающийся на другой проект, который ссылается на этот пакет, будет вести себя так, как если бы он ссылался на пакет) и может быть отключена с помощью свойства IsTestingPlatformApplication MSBuild.

См. также