Общие сведения о средстве выполнения MSTest
Средство выполнения MSTest — это упрощенная и переносимая альтернатива VSTest для выполнения тестов во всех контекстах (например, конвейеров непрерывной интеграции (CI), CLI, обозревателя тестов Visual Studio и текстового обозревателя VS Code). Средство выполнения MSTest внедрено непосредственно в тестовые проекты MSTest, и для выполнения тестов нет других зависимостей приложений, таких как vstest.console
или dotnet test
, необходимых для выполнения тестов.
Средство выполнения MSTest открытый код и создает библиотекуMicrosoft.Testing.Platform
. Код можно найти Microsoft.Testing.Platform
в репозитории microsoft/testfx GitHub. Модуль runner MSTest поставляется вместе с MSTest in 3.2.0-preview.23623.1
или более поздней версией.
Включение runner MSTest в проекте MSTest
Рекомендуется использовать пакет SDK MSTest, так как он значительно упрощает конфигурацию проекта и обновляет проект, и обеспечивает правильное выравнивание версий платформы (MSTest runner) и его расширений.
При использовании MSTest SDK
по умолчанию вы решили использовать средство выполнения MSTest.
<Project Sdk="MSTest.Sdk/3.3.1">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>
Кроме того, можно включить средство выполнения MSTest, добавив EnableMSTestRunner
свойство и установив его OutputType
Exe
в файл проекта. Кроме того, необходимо убедиться, что вы используете MSTest 3.2.0-preview.23623.1
или более поздней версии.
Рассмотрим следующий пример файла проекта:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<!-- Enable the MSTest runner, this is an opt-in feature -->
<EnableMSTestRunner>true</EnableMSTestRunner>
<OutputType>Exe</OutputType>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<IsPackable>false</IsPackable>
<IsTestProject>true</IsTestProject>
</PropertyGroup>
<ItemGroup>
<!--
MSTest meta package is the recommended way to reference MSTest.
It's equivalent to referencing:
Microsoft.NET.Test.Sdk
MSTest.TestAdapter
MSTest.TestFramework
MSTest.Analyzers
-->
<PackageReference Include="MSTest" Version="3.2.0" />
<!--
Coverlet collector isn't compatible with MSTest runner, you can
either switch to Microsoft CodeCoverage (as shown below),
or switch to be using coverlet global tool
https://github.com/coverlet-coverage/coverlet#net-global-tool-guide-suffers-from-possible-known-issue
-->
<PackageReference Include="Microsoft.Testing.Extensions.CodeCoverage"
Version="17.10.1" />
</ItemGroup>
</Project>
Совет
Рекомендуется задать свойство EnableMSTestRunner
в файле Directory.Build.props вместо csproj файла, чтобы убедиться, что все тестовые проекты в решении используют средство запуска MSTest.
Конфигурации и фильтры
.runsettings
Средство выполнения MSTest поддерживает запуски с помощью параметра --settings
командной строки. Полный список поддерживаемых записей MSTest см. в разделе "Настройка MSTest: Runsettings". В следующих командах показаны различные примеры использования.
Использование среды dotnet run
:
dotnet run --project Contoso.MyTests -- --settings config.runsettings
Использование среды dotnet exec
:
dotnet exec Contoso.MyTests.dll --settings config.runsettings
–или–
dotnet Contoso.MyTests.dll --settings config.runsettings
Использование исполняемого файла:
Contoso.MyTests.exe --settings config.runsettings
Фильтр тестов
Вы можете легко предоставить фильтр тестов с помощью параметра --filter
командной строки. В следующих командах показаны некоторые примеры.
Использование среды dotnet run
:
dotnet run --project Contoso.MyTests -- --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"
Использование среды dotnet exec
:
dotnet exec Contoso.MyTests.dll --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"
–или–
dotnet Contoso.MyTests.dll --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"
Использование исполняемого файла:
Contoso.MyTests.exe --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"