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


Обзор Microsoft.Testing.Platform

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

Совет

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

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

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

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

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

Основные принципы Microsoft.Testing.Platform

Эта новая платформа тестирования основана на опыте команды по тестированию опыта разработчиков .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.

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

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

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

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

  • MSTest. Поддержка Microsoft.Testing.Platform в MSTest выполняется через инструмент MSTest.
  • NUnit. В NUnit поддержка Microsoft.Testing.Platform осуществляется через NUnit runner.
  • xUnit.net. Дополнительные сведения см. в Microsoft Testing Platform (xUnit.net v3) и Microsoft Testing Platform (xUnit.net v2) в документации по xUnit.net.
  • TUnit: полностью построен на основе Microsoft.Testing.Platform. Для получения дополнительной информации смотрите документацию по TUnit.

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

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

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

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

Опции

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

Интеграция MSBuild

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

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

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

Заметка

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

См. также