Общие сведения о пакете SDK MSTest
MSTest.Sdk — это пакет SDK для проекта MSBuild для создания приложений MSTest. Однако можно создать приложение MSTest без этого пакета SDK, но пакет SDK MSTest:
- Адаптировано к обеспечению первого класса для тестирования с помощью MSTest
- рекомендуется для большинства пользователей.
- Легко настроить для других пользователей.
Пакет SDK MSTest обнаруживает и запускает тесты с помощью средства выполнения MSTest.
Вы можете включить MSTest.Sdk
в проекте, просто обновив Sdk
атрибут Project
узла проекта:
<Project Sdk="MSTest.Sdk/3.3.1">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
</PropertyGroup>
<!-- references to the code to test -->
</Project>
Примечание.
/3.3.1
Приведен пример, так как это первая версия, предоставляющая пакет SDK, но ее можно заменить любой более новой версией.
Чтобы упростить обработку версий, рекомендуется задать версию пакета SDK на уровне решения с помощью global.json. Например, файл проекта будет выглядеть следующим образом:
<Project Sdk="MSTest.Sdk">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
</PropertyGroup>
<!-- references to the code to test -->
</Project>
Затем у вас будет файл global.json, указывающий версию MSTest.Sdk
следующим образом:
{
"msbuild-sdks": {
"MSTest.Sdk": "3.3.1"
}
}
Дополнительные сведения см. в разделе "Использование пакетов SDK для проекта MSBuild".
При выполнении build
проекта все необходимые компоненты восстанавливаются и устанавливаются с помощью стандартного рабочего процесса NuGet, заданного проектом.
Вам не нужно ничего другого для сборки и выполнения тестов, и вы можете использовать те же средства (например, dotnet test
Visual Studio), которые используются классическим проектом MSTest.
Выберите средство выполнения
По умолчанию пакет SDK MSTest использует средство выполнения MSTest, но вы можете легко переключиться на VSTest , добавив свойство <UseVSTest>true</UseVSTest>
.
Расширение runner MSTest
Вы можете настроить MSTest runner
интерфейс с помощью набора расширений пакетов NuGet. Чтобы упростить и улучшить этот интерфейс, пакет SDK MSTest представляет две функции.
Профиль runner MSTest
Концепция профилей позволяет выбрать набор конфигураций и расширений по умолчанию, которые будут применяться к тестовом проекту.
Профиль можно задать с помощью свойства TestingExtensionsProfile
одним из следующих трех профилей:
Default
— включает рекомендуемые расширения для этой версии MSTest.SDK. Это значение по умолчанию, если свойство не задано явным образом.None
— расширения не включены.AllMicrosoft
— включите все расширения, отправленные корпорацией Майкрософт (включая расширения с ограничивающей лицензией).
Ниже приведен полный пример использования None
профиля:
<Project Sdk="MSTest.Sdk/3.3.1">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<TestingExtensionsProfile>None</TestingExtensionsProfile>
</PropertyGroup>
<!-- references to the code to test -->
</Project>
Включение или отключение расширений
Расширения можно включить и отключить с помощью свойств MSBuild с шаблоном Enable[NugetPackageNameWithoutDots]
.
Например, чтобы включить расширение аварийного дампа (пакет NuGet Microsoft.Testing.Extensions.CrashDump), можно использовать следующее свойство EnableMicrosoftTestingExtensionsCrashDump
true
:
<Project Sdk="MSTest.Sdk/3.3.1">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<EnableMicrosoftTestingExtensionsCrashDump>true</EnableMicrosoftTestingExtensionsCrashDump>
</PropertyGroup>
<!-- references to the code to test -->
</Project>
На этой странице перечислены все доступные расширения.
Предупреждение
Просмотрите условия лицензирования для каждого расширения, так как они могут отличаться.
Включенные и отключенные расширения объединяются с расширениями, предоставляемыми выбранным профилем расширения.
Это можно использовать для включения дополнительного расширения на вершине неявного Default
профиля (как показано в предыдущем примере CrashDumpExtension).
Или отключить расширение, которое поступает из выбранного профиля. В этом случае отключение MS Code Coverage
расширения по параметру <EnableMicrosoftTestingExtensionsCodeCoverage>false</EnableMicrosoftTestingExtensionsCodeCoverage>
:
<Project Sdk="MSTest.Sdk/3.3.1">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<EnableMicrosoftTestingExtensionsCodeCoverage>false</EnableMicrosoftTestingExtensionsCodeCoverage>
</PropertyGroup>
<!-- references to the code to test -->
</Project>
Функции
Вне выбора модуля runner и модуля runner для конкретных расширений также MSTest.Sdk
предоставляются дополнительные функции, упрощающие и расширяющие возможности тестирования.
.NET Aspire
.NET Aspire — это специализированный, готовый к облаку стек для создания наблюдаемых, готовых к рабочей среде, распределенных приложений. .NET Aspire предоставляется через коллекцию пакетов NuGet, которые обрабатывают конкретные облачные задачи. Дополнительные сведения см. в документации по .NET Aspire.
Примечание.
Эта функция доступна из MSTest.Sdk 3.4.0
Задав для свойства EnableAspireTesting
true
все зависимости и значения по умолчанию, вам потребуется выполнить тестирование с помощью Aspire
и MSTest
.
<Project Sdk="MSTest.Sdk/3.4.0">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<EnableAspireTesting>true</EnableAspireTesting>
</PropertyGroup>
<!-- references to the code to test -->
</Project>
Playwright
Playwright обеспечивает надежное комплексное тестирование для современных веб-приложений. Дополнительные сведения см. в официальных документах playwright.
Примечание.
Эта функция доступна из MSTest.Sdk 3.4.0
Задав для свойства EnablePlaywright
true
все зависимости и значения по умолчанию, вам потребуется выполнить тестирование с помощью Playwright
и MSTest
.
<Project Sdk="MSTest.Sdk/3.4.0">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<EnablePlaywright>true</EnablePlaywright>
</PropertyGroup>
<!-- references to the code to test -->
</Project>
Перенос в пакет SDK MSTest
При переносе существующего тестового проекта MSTest в пакет SDK MSTest сначала замените Sdk="Microsoft.NET.Sdk"
запись в верхней части тестового проекта на Sdk="MSTest.Sdk/3.3.1"
- Sdk="Microsoft.NET.Sdk"
+ Sdk="MSTest.Sdk"
Добавьте версию в вашу global.json
:
{
"msbuild-sdks": {
"MSTest.Sdk": "3.3.1"
}
}
Затем можно начать упрощение проекта.
Удаление свойств по умолчанию:
- <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.*
пакеты.
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по