Overzicht van MSTest runner
De MSTest runner is een lichtgewicht en draagbaar alternatief voor VSTest voor het uitvoeren van tests in alle contexten (bijvoorbeeld CI-pijplijnen (continue integratie), CLI, Visual Studio Test Explorer en VS Code Text Explorer. De MSTest runner is rechtstreeks ingesloten in uw MSTest-testprojecten en er zijn geen andere app-afhankelijkheden, zoals vstest.console
of dotnet test
, die nodig zijn om uw tests uit te voeren.
De MSTest runner is open source en bouwt voort op een Microsoft.Testing.Platform
bibliotheek. U vindt Microsoft.Testing.Platform
code in de GitHub-opslagplaats microsoft/testfx . De MSTest runner wordt geleverd met MSTest in 3.2.0-preview.23623.1
of nieuwer.
MSTest runner inschakelen in een MSTest-project
Het is raadzaam om MSTest SDK te gebruiken, omdat het de configuratie van uw project aanzienlijk vereenvoudigt en het project bijwerkt, en het zorgt voor een juiste uitlijning van de versies van het platform (MSTest runner) en de bijbehorende extensies.
Wanneer u gebruikt MSTest SDK
, bent u standaard aangemeld voor het gebruik van MSTest runner.
<Project Sdk="MSTest.Sdk/3.3.1">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>
U kunt MSTest runner ook inschakelen door de EnableMSTestRunner
eigenschap en instelling OutputType
toe te voegen aan Exe
het projectbestand. U moet er ook voor zorgen dat u nieuwer of nieuwer gebruikt MSTest 3.2.0-preview.23623.1
.
Bekijk het volgende voorbeeldprojectbestand:
<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>
Tip
Het is raadzaam om de eigenschap EnableMSTestRunner
in Directory.Build.props-bestand in te stellen bestand in plaats van csproj-bestand om ervoor te zorgen dat alle testprojecten in uw oplossing de MSTestrunner gebruiken.
Configuraties en filters
.runsettings
De MSTest runner ondersteunt de runsettings via de opdrachtregeloptie --settings
. Zie MSTest configureren: Runsettings voor de volledige lijst met ondersteunde MSTest-vermeldingen. In de volgende opdrachten worden verschillende gebruiksvoorbeelden weergegeven.
Met behulp van dotnet run
:
dotnet run --project Contoso.MyTests -- --settings config.runsettings
Met behulp van dotnet exec
:
dotnet exec Contoso.MyTests.dll --settings config.runsettings
– of –
dotnet Contoso.MyTests.dll --settings config.runsettings
Het uitvoerbare bestand gebruiken:
Contoso.MyTests.exe --settings config.runsettings
Testfilter
U kunt het testfilter naadloos opgeven met behulp van de opdrachtregeloptie--filter
. In de volgende opdrachten ziet u enkele voorbeelden.
Met behulp van dotnet run
:
dotnet run --project Contoso.MyTests -- --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"
Met behulp van dotnet exec
:
dotnet exec Contoso.MyTests.dll --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"
– of –
dotnet Contoso.MyTests.dll --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"
Het uitvoerbare bestand gebruiken:
Contoso.MyTests.exe --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"