Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
MSTest.Sdk — это пакет SDK проекта MSBuild для создания приложений MSTest. Можно создать приложение MSTest без этого пакета SDK, однако пакет SDK MSTest:
- Ориентировано на предоставление первоклассного опыта тестирования с помощью MSTest.
- Рекомендуемая цель для большинства пользователей.
- Легко настроить для других пользователей.
По умолчанию пакет SDK MSTest обнаруживает и выполняет тесты с помощью средства запуска MSTest для Microsoft.Testing.Platform. Вы можете переключиться на использование VSTest, указав <UseVSTest>true</UseVSTest>
Вы можете включить MSTest.Sdk в проекте, просто обновив Sdk атрибут Project узла проекта:
<Project Sdk="MSTest.Sdk/3.10.2">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
</PropertyGroup>
</Project>
Примечание.
/3.10.2 приведен в качестве примера и может быть заменена любой более новой версией.
Чтобы упростить обработку версий, рекомендуется задать версию пакета SDK на уровне решения с помощью файла global.json . Например, файл проекта будет выглядеть следующим образом:
<Project Sdk="MSTest.Sdk">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
</PropertyGroup>
</Project>
Затем укажите версию MSTest.Sdk в файле global.json следующим образом:
{
"msbuild-sdks": {
"MSTest.Sdk": "3.10.2"
}
}
Дополнительные сведения см. в разделе "Использование пакетов SDK для проекта MSBuild".
При выполнении build проекта все необходимые компоненты восстанавливаются и устанавливаются с помощью стандартного рабочего процесса NuGet, заданного проектом.
Вам не нужно ничего другого для сборки и выполнения тестов, и вы можете использовать те же средства (например, dotnet test Visual Studio), которые используются классическим проектом MSTest.
Внимание
Переключившись на MSTest.Sdk, вы выбираете использование средства запуска MSTest (включая Microsoft.Testing.Platform для MSTest), в том числе с помощью dotnet test. Это требует изменения вызовов CI и локальных вызовов CLI, а также влияет на доступные записи в .runsettings. Вы можете использовать MSTest.Sdk и по-прежнему сохранять старые интеграции и средства, переключив вместо этого раннер.
По умолчанию наборы EnableMSTestRunner MSTest.Sdk и TestingPlatformDotnetTestSupport значение true. Дополнительные сведения о тесте dotnet и его различных режимах запуска Microsoft.Testing.Platform см. в разделе "Тестирование с помощью 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/3.10.2">
<PropertyGroup>
<TargetFramework>net8.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/3.10.2">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<EnableMicrosoftTestingExtensionsCrashDump>true</EnableMicrosoftTestingExtensionsCrashDump>
</PropertyGroup>
</Project>
Список всех доступных расширений см. в разделе "Расширения Microsoft.Testing.Platform".
Предупреждение
Важно проверить условия лицензирования для каждого расширения, так как они могут отличаться.
Включенные и отключенные расширения объединяются с дополнениями, предоставляемыми выбранным профилем дополнений.
Этот шаблон свойства можно использовать для включения дополнительного расширения поверх неявного профиля Default (как показано в предыдущем примере CrashDumpExtension).
Вы также можете отключить расширение, которое поступает из выбранного профиля. Например, отключите MS Code Coverage расширение, задав :<EnableMicrosoftTestingExtensionsCodeCoverage>false</EnableMicrosoftTestingExtensionsCodeCoverage>
<Project Sdk="MSTest.Sdk/3.10.2">
<PropertyGroup>
<TargetFramework>net8.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/3.4.0">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<EnableAspireTesting>true</EnableAspireTesting>
</PropertyGroup>
</Project>
Тестирование с помощью Playwright
Playwright обеспечивает надежное комплексное тестирование для современных веб-приложений. Официальную документацию Playwright см. для получения дополнительной информации.
Примечание.
Эта функция доступна в MSTest.Sdk 3.4.0.
Установив свойство EnablePlaywright в true, вы можете обеспечить все необходимые зависимости и директивы по умолчанию using для тестирования с помощью Playwright и MSTest.
<Project Sdk="MSTest.Sdk/3.4.0">
<PropertyGroup>
<TargetFramework>net8.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": "3.10.2"
}
}
Затем можно начать упрощение проекта.
Удалите свойства по умолчанию:
- <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.)