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


Конфигурация пакета SDK MSTest

В этой статье рассматриваются дополнительные параметры конфигурации для MSTest.Sdk. Основные сведения о настройке и начале работы см. в статье "Начало работы с MSTest".

Внимание

По умолчанию MSTest.Sdk использует тестовый фреймворк MSTest с Microsoft.Testing.Platform, в том числе с dotnet test. Для этого требуется изменить вызовы CI и локального CLI, а также влияет на доступные записи в файле .runsettings. Вы можете сохранить старые интеграции и средства, переключившись на VSTest.

MSTest.Sdk устанавливает EnableMSTestRunner и TestingPlatformDotnetTestSupport в значение true по умолчанию. Дополнительные сведения о dotnet test и его различных режимах см. в разделе "Тестирование с помощью dotnet test".

Тестовые вспомогательные библиотеки служебной программы

Если проект, использующий MSTest.Sdk, предназначен для поддержки тестовой программы, и сам по себе не содержит выполняемых тестов, проект должен иметь .<IsTestApplication>false</IsTestApplication>

Выберите бегуна

По умолчанию пакет SDK MSTest использует Microsoft.Testing.Platform, но можно перейти на VSTest, добавив свойство <UseVSTest>true</UseVSTest>.

Расширьте Microsoft.Testing.Platform

Вы можете настроить Microsoft.Testing.Platform опыт с помощью набора расширений пакетов NuGet. Чтобы упростить и улучшить этот интерфейс, пакет SDK MSTest представляет две функции:

Профиль Microsoft.Testing.Platform

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

Профиль можно задать с помощью свойства TestingExtensionsProfile одним из следующих трех профилей:

Ниже приведен полный пример использования None профиля:

<Project Sdk="MSTest.Sdk/4.1.0">

    <PropertyGroup>
        <TargetFramework>net10.0</TargetFramework>
        <TestingExtensionsProfile>None</TestingExtensionsProfile>
    </PropertyGroup>

</Project>
Расширение или профиль Никакой По умолчанию AllMicrosoft
покрытие кода ✔️ ✔️
дамп памяти при сбое ✔️
Подделки ✔️¹
дамп зависания ✔️
горячая перезагрузка ✔️
повторная попытка ✔️
Trx ✔️ ✔️
AzureDevOpsReport ✔️²

¹ MSTest.Sdk 3.7.0+ 22 MSTest.Sdk 3.11.0+

Включение или отключение расширений

Расширения можно включить и отключить с помощью свойств MSBuild с шаблоном Enable[NugetPackageNameWithoutDots].

Например, чтобы активировать расширение для аварийных дампов (пакет NuGet Microsoft.Testing.Extensions.CrashDump), можно задать следующее свойство EnableMicrosoftTestingExtensionsCrashDumptrue:

<Project Sdk="MSTest.Sdk/4.1.0">

<PropertyGroup>
    <TargetFramework>net10.0</TargetFramework>
    <EnableMicrosoftTestingExtensionsCrashDump>true</EnableMicrosoftTestingExtensionsCrashDump>
</PropertyGroup>

</Project>

Список всех доступных расширений см. в разделе "Расширения Microsoft.Testing.Platform".

Предупреждение

Важно проверить условия лицензирования для каждого расширения, так как они могут отличаться.

Включенные и отключенные расширения объединяются с дополнениями, предоставляемыми выбранным профилем дополнений.

Этот шаблон свойства можно использовать для включения дополнительного расширения поверх неявного профиля Default (как показано в предыдущем примере CrashDumpExtension).

Вы также можете отключить расширение, которое поступает из выбранного профиля. Например, отключите MS Code Coverage расширение, задав :<EnableMicrosoftTestingExtensionsCodeCoverage>false</EnableMicrosoftTestingExtensionsCodeCoverage>

<Project Sdk="MSTest.Sdk/4.1.0">

    <PropertyGroup>
        <TargetFramework>net10.0</TargetFramework>
        <EnableMicrosoftTestingExtensionsCodeCoverage>false</EnableMicrosoftTestingExtensionsCodeCoverage>
    </PropertyGroup>

</Project>

Функции

Помимо выбора двигателей и расширений, специфичных для них, MSTest.Sdk также предоставляет дополнительные функции, упрощающие и повышающие возможности вашего тестирования.

Тестирование с помощью Aspire

Aspire — это облачный стек с заданной конфигурацией, предназначенный для создания наблюдаемых, готовых к эксплуатации и распределенных приложений. Aspire поставляется в виде коллекции пакетов NuGet, которые обрабатывают определенные задачи облачных приложений. Дополнительные сведения см. в документации Aspire.

Примечание.

Эта функция доступна в MSTest.Sdk 3.4.0.

Присвоив свойству EnableAspireTesting значение true, можно получить все необходимые зависимости и директивы по умолчанию using для тестирования с помощью Aspire и MSTest.

<Project Sdk="MSTest.Sdk/4.1.0">

    <PropertyGroup>
        <TargetFramework>net10.0</TargetFramework>
        <EnableAspireTesting>true</EnableAspireTesting>
    </PropertyGroup>

</Project>

Тестирование с помощью Playwright

Playwright обеспечивает надежное комплексное тестирование для современных веб-приложений. Официальную документацию Playwright см. для получения дополнительной информации.

Примечание.

Эта функция доступна в MSTest.Sdk 3.4.0.

Установив свойство EnablePlaywright в true, вы можете обеспечить все необходимые зависимости и директивы по умолчанию using для тестирования с помощью Playwright и MSTest.

<Project Sdk="MSTest.Sdk/4.1.0">

    <PropertyGroup>
        <TargetFramework>net10.0</TargetFramework>
        <EnablePlaywright>true</EnablePlaywright>
    </PropertyGroup>

</Project>

Перейти на MSTest SDK

Рассмотрим следующие шаги, необходимые для миграции в пакет SDK MSTest.

Обновление проекта

При переносе существующего тестового проекта MSTest в пакет SDK MSTest сначала замените Sdk="Microsoft.NET.Sdk" запись в верхней части тестового проекта на Sdk="MSTest.Sdk"

- Sdk="Microsoft.NET.Sdk"
+ Sdk="MSTest.Sdk"

Добавьте версию в global.json.

{
    "msbuild-sdks": {
        "MSTest.Sdk": "4.1.0"
    }
}

Затем можно начать упрощение проекта.

Удалите свойства по умолчанию:

- <EnableMSTestRunner>true</EnableMSTestRunner>
- <OutputType>Exe</OutputType>
- <IsPackable>false</IsPackable>
- <IsTestProject>true</IsTestProject>

Удаление ссылок на пакет по умолчанию:

- <PackageReference Include="MSTest"
- <PackageReference Include="MSTest.TestFramework"
- <PackageReference Include="MSTest.TestAdapter"
- <PackageReference Include="MSTest.Analyzers"
- <PackageReference Include="Microsoft.NET.Test.Sdk"

Наконец, на основе используемого профиля расширений можно также удалить некоторые Microsoft.Testing.Extensions.* пакеты.

Обновление CI

После обновления проектов, если вы используете Microsoft.Testing.Platform (по умолчанию) и полагаетесь на dotnet test для проведения тестов, необходимо обновить конфигурацию CI. Дополнительные сведения и руководство по пониманию всех необходимых изменений см. в статье dotnet test integration.

Если вы используете режим dotnet testVSTest, вот пример обновления при использовании задачи DotNetCoreCLI в Azure DevOps.

\- task: DotNetCoreCLI@2
  inputs:
    command: 'test'
    projects: '**/**.sln'
-    arguments: '--configuration Release'
+    arguments: '--configuration Release -- --report-trx --results-directory $(Agent.TempDirectory) --coverage'

Известные ограничения

Пакеты SDK для NuGet, предоставляемые MSBuild (включая MSTest.Sdk), имеют ограниченную поддержку инструментов при обновлении их версии, что означает, что обычное обновление NuGet и пользовательский интерфейс Visual Studio для управления пакетами NuGet не работает должным образом. Необходимо вручную обновить версию в global.json файле и в файле проекта. (Это применимо, даже если вы используете Dependabot из-за проблем с dependabot-core#12824 и dependabot-core#8615.)

См. также