Microsoft.Testing.Platform gebruiken met dotnet test
In dit artikel wordt beschreven hoe u tests uitvoert wanneer u tests gebruikt dotnet test
Microsoft.Testing.Platform
en de verschillende opties die beschikbaar zijn om de MSBuild-uitvoer te configureren die wordt geproduceerd bij het uitvoeren van tests via Microsoft.Testing.Platform.
In dit artikel wordt beschreven hoe dotnet test
u alle tests uitvoert in een oplossing (*.sln) die gebruikmaakt van Microsoft.Testing.Platform
.
dotnet test
integratie
De dotnet-testopdracht is een manier om tests uit te voeren vanuit oplossingen, projecten of reeds gebouwde assembly's.
Microsoft.Testing.Platform koppelt zich aan deze infrastructuur om een uniforme manier te bieden om tests uit te voeren, met name wanneer u migreert van VSTest naar Microsoft.Testing.Platform
.
dotnet test
integratie - VSTest-modus
Microsoft.Testing.Platform
biedt een compatibiliteitslaag (VSTest Bridge) waarmee u naadloos kunt dotnet test
werken.
Tests kunnen worden uitgevoerd door het volgende uit te voeren:
dotnet test
Deze laag voert een test uit via VSTest en kan ermee worden geïntegreerd op VSTest Test Framework Adapter-niveau.
dotnet test
- Microsoft.Testing.Platform-modus
VSTest wordt standaard gebruikt om tests uit te voeren Microsoft.Testing.Platform
. U kunt een volledige Microsoft.Testing.Platform
optie inschakelen door de <TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport>
instelling in het projectbestand op te geven. Met deze instelling wordt VSTest uitgeschakeld en worden dankzij de transitieve afhankelijkheid van het NuGet-pakket Microsoft.Testing.Platform.MSBuild direct alle Microsoft.Testing.Platform
geautoriseerde testprojecten in uw oplossing uitgevoerd. Het werkt naadloos als u een direct Microsoft.Testing.Platform
testproject doorgeeft.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<IsPackable>false</IsPackable>
<IsTestProject>true</IsTestProject>
<OutputType>Exe</OutputType>
<EnableMSTestRunner>true</EnableMSTestRunner>
<!-- Add this to your project file. -->
<TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport>
</PropertyGroup>
<!-- ... -->
</Project>
In deze modus kunt u extra parameters opgeven die worden gebruikt om de testtoepassing op een van de volgende manieren aan te roepen:
Microsoft.Testing.Platform
Vanaf versie 1.4 (opgenomen in MSTest versie 3.6) kunt u opties toevoegen na het dubbele streepje--
op de opdrachtregel:dotnet test -- --minimum-expected-tests 10
Door de
TestingPlatformCommandLineArguments
eigenschap MSBuild op de opdrachtregel te gebruiken:dotnet test -p:TestingPlatformCommandLineArguments="--minimum-expected-tests 10"
Of in het projectbestand:
<PropertyGroup> ... <TestingPlatformCommandLineArguments>--minimum-expected-tests 10</TestingPlatformCommandLineArguments> </PropertyGroup>
Aanvullende MSBuild-opties
De MSBuild-integratie biedt opties die kunnen worden opgegeven in het projectbestand of via globale eigenschappen op de opdrachtregel, zoals -p:TestingPlatformShowTestsFailure=true
.
Dit zijn de beschikbare opties:
Fout per test weergeven
Standaard worden testfouten samengevat in een .log-bestand en wordt één fout per testproject gerapporteerd aan MSBuild.
Als u fouten per mislukte test wilt weergeven, geeft u -p:TestingPlatformShowTestsFailure=true
op de opdrachtregel op of voegt u de <TestingPlatformShowTestsFailure>true</TestingPlatformShowTestsFailure>
eigenschap toe aan het projectbestand.
Op de opdrachtregel:
dotnet test -p:TestingPlatformShowTestsFailure=true
Of in projectbestand:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<IsPackable>false</IsPackable>
<IsTestProject>true</IsTestProject>
<OutputType>Exe</OutputType>
<EnableMSTestRunner>true</EnableMSTestRunner>
<TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport>
<!-- Add this to your project file. -->
<TestingPlatformShowTestsFailure>true</TestingPlatformShowTestsFailure>
</PropertyGroup>
<!-- ... -->
</Project>
Volledige platformuitvoer weergeven
Standaard worden alle console-uitvoer die door de onderliggende uitvoerbare schrijfbewerkingen voor de test wordt vastgelegd en verborgen voor de gebruiker. Dit omvat de banner, versie-informatie en opgemaakte testgegevens.
Gebruik <TestingPlatformCaptureOutput>false</TestingPlatformCaptureOutput>
om deze informatie samen met MSBuild-uitvoer weer te geven.
Deze optie heeft geen invloed op de manier waarop het testframework gebruikersuitvoer vastlegt die is geschreven door Console.WriteLine
of andere vergelijkbare manieren om naar de console te schrijven.
Op de opdrachtregel:
dotnet test -p:TestingPlatformCaptureOutput=false
Of in projectbestand:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<IsPackable>false</IsPackable>
<IsTestProject>true</IsTestProject>
<OutputType>Exe</OutputType>
<EnableMSTestRunner>true</EnableMSTestRunner>
<TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport>
<!-- Add this to your project file. -->
<TestingPlatformCaptureOutput>false</TestingPlatformCaptureOutput>
</PropertyGroup>
<!-- ... -->
</Project>
Belangrijk
Alle bovenstaande voorbeelden voegen eigenschappen toe, zoals EnableMSTestRunner
, TestingPlatformDotnetTestSupport
en TestingPlatformCaptureOutput
in het csproj-bestand. Het wordt echter ten zeerste aanbevolen deze eigenschappen in te stellen in Directory.Build.props
. Op die manier hoeft u het niet toe te voegen aan elk testprojectbestand en loopt u geen risico dat u een nieuw project introduceert dat deze eigenschappen niet instelt en uiteindelijk een oplossing krijgt waarbij sommige projecten VSTest zijn, terwijl andere Microsoft.Testing.Platform zijn, wat mogelijk niet correct werkt en niet wordt ondersteund.