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


Общие сведения о пакете 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), можно использовать следующее свойство EnableMicrosoftTestingExtensionsCrashDumptrue:

<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

Задав для свойства EnableAspireTestingtrue все зависимости и значения по умолчанию, вам потребуется выполнить тестирование с помощью 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

Задав для свойства EnablePlaywrighttrue все зависимости и значения по умолчанию, вам потребуется выполнить тестирование с помощью 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.* пакеты.