Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье рассматриваются дополнительные параметры конфигурации для 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— расширения не включены.Default— включает рекомендуемые расширения для этой версии MSTest.SDK. Это значение по умолчанию, если свойство не задано явным образом.Включает следующие расширения:
AllMicrosoft— включите все расширения, отправленные корпорацией Майкрософт (включая расширения с ограничивающей лицензией).Включает следующие расширения:
Ниже приведен полный пример использования 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.)