Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Dit artikel biedt inzichten in het dotnet test CLI-commando, inclusief de historiek en compatibiliteit met zowel VSTest als Microsoft.Testing.Platform (MTP).
De dotnet test opdracht werkt in twee primaire modi:
-
VSTest-modus: Dit is de standaardmodus voor
dotnet testen was de enige beschikbare modus vóór de .NET 10 SDK. Het is voornamelijk ontworpen voor VSTest, maar kan ook Microsoft.Testing.Platform-test uitvoeren via het Microsoft.Testing.Platform.MSBuild NuGet-pakket. - Microsoft.Testing.Platform-modus: Geïntroduceerd met de .NET 10 SDK, deze modus ondersteunt exclusief testapplicaties gebouwd met Microsoft.Testing.Platform.
Hint
Zie dotnet test voor CLI-referentie.
VSTest-modus van dotnet test
Lange tijd was VSTest het enige testplatform in .NET. Daardoor is dotnet test exclusief ontworpen voor VSTest, waarbij alle opdrachtregelopties zijn afgestemd op VSTest.
Het proces omvat het aanroepen van het VSTest MSBuild-doel, dat andere interne doelen activeert om uit te voeren en uiteindelijk vstest.console uitvoert. Alle dotnet test commandoregelopties worden vertaald naar hun equivalenten in vstest.console.
MTP-projecten uitvoeren met VSTest-modus
dotnet test is ontworpen om VSTest-projecten uit te voeren in de VSTest-modus. U kunt echter MTP-projecten uitvoeren in dotnet test de VSTest-modus met behulp van het Microsoft.Testing.Platform.MSBuild-pakket . Vanuit het perspectief van de gebruiker wordt deze ondersteuning ingeschakeld door de MSBuild-eigenschap TestingPlatformDotnetTestSupport in te stellen op true (de standaardwaarde is false om redenen van achterwaartse compatibiliteit). Wanneer deze eigenschap is ingesteld op true, wijzigt Microsoft.Testing.Platform.MSBuild het VSTest targetgedrag, zodat het wordt omgeleid om InvokeTestingPlatform aan te roepen.
InvokeTestingPlatform is een MSBuild-doel dat is opgenomen in Microsoft.Testing.Platform.MSBuild die verantwoordelijk is voor het correct uitvoeren van MTP-testtoepassingen als uitvoerbare bestanden. VSTest-specifieke opdrachtregelopties, zoals --logger, worden op de achtergrond genegeerd in deze modus. Als u MTP-specifieke argumenten wilt opnemen, zoals --report-trx, moet u deze toevoegen na een extra --. Bijvoorbeeld: dotnet test -- --report-trx. In MTP 1.9 wordt een waarschuwing met code MTP0001 geproduceerd wanneer een argument dat op de achtergrond wordt genegeerd wordt gedetecteerd.
Opmerking
MSTest en NUnit maken gebruik van het pakket Microsoft.Testing.Extensions.VSTestBridge . Door in te stellen EnableMSTestRunner of EnableNUnitRunner (waarmee Microsoft.Testing.Platform wordt ingeschakeld), ondersteunt uw testproject zowel VSTest als Microsoft.Testing.Platform.
Als u in dat scenario de VSTest-modus gebruikt met dotnet test en TestingPlatformDotnetTestSupport niet op waarheid instelt, wordt u in wezen volledig uitgevoerd met VSTest, alsof EnableMSTestRunner en EnableNUnitRunner niet op waarheid zijn ingesteld.
Opmerking
Het wordt ten zeerste aanbevolen om de TestingPlatformDotnetTestSupport eigenschap in te stellen in Directory.Build.props. Dit zorgt ervoor dat u deze niet afzonderlijk hoeft toe te voegen aan elk testprojectbestand. Daarnaast voorkomt het het risico dat er een nieuw testproject wordt ingevoerd dat deze eigenschap niet instelt, wat kan leiden tot een oplossing waarbij sommige projecten VSTest gebruiken terwijl anderen Microsoft.Testing.Platform gebruiken. Deze gemengde configuratie werkt mogelijk niet goed en is een niet-ondersteund scenario.
Belangrijk
Het uitvoeren van MTP-projecten in de VSTest-modus wordt beschouwd als verouderd ten gunste van de nieuwere ervaring in .NET 10 SDK. De ondersteuning voor uitvoering onder deze modus wordt verwijderd in Microsoft.Testing.Platform versie 2 als deze wordt uitgevoerd met .NET 10 SDK. De ondersteuning blijft beschikbaar voor .NET 9 SDK en eerder om achterwaartse compatibiliteit te garanderen.
Zie Migreren naar MTP-modus van dotnet testvoor meer informatie.
De volgende lijst bevat een overzicht van de opdrachtregelopties van dotnet test de opdracht in de VSTest-modus die worden ondersteund door Microsoft.Testing.Platform. Deze opties zijn specifiek voor het buildproces en worden niet doorgegeven aan VSTest, daarom werken ze met MTP.
-a|--arch <ARCHITECTURE>--artifacts-path <ARTIFACTS_DIR>-c|--configuration <CONFIGURATION>-f|--framework <FRAMEWORK>-e|--environment <NAME="VALUE">--interactive--no-build--nologo--no-restore-o|--output <OUTPUT_DIRECTORY>--os <OS>-r|--runtime <RUNTIME_IDENTIFIER>-v|--verbosity <LEVEL>
Hint
U kunt de opdrachtregelargumenten van uw testtoepassing aanpassen via TestingPlatformCommandLineArguments de eigenschap MSBuild:
<PropertyGroup>
...
<TestingPlatformCommandLineArguments>--minimum-expected-tests 10</TestingPlatformCommandLineArguments>
</PropertyGroup>
Zie dotnet test voor meer informatie over het uitvoeren van MTP-projecten in dotnet test.
Geavanceerde technische details
In dotnet test de VSTest-modus wordt de -- functie gebruikt om de RunSettings-argumenten aan te geven.
dotnet test Oorspronkelijk is ontworpen om deze argumenten door te geven als een MSBuild-eigenschap genaamdVSTestCLIRunSettings. Daarom zetten we bij het uitvoeren van MTP-testtoepassingen in de VSTest-modus de waarde van VSTestCLIRunSettings in om de 'toepassingsargumenten' weer te geven.
VsTest en Microsoft.Testing.Platform (MTP) combineren
Wanneer u in de VSTest-modus werkt dotnet test , is het raadzaam om te voorkomen dat vsTest en Microsoft.Testing.Platform in dezelfde oplossing worden opgenomen.
Dit scenario wordt niet officieel ondersteund en u moet rekening houden met het volgende:
- VSTest-specifieke opdrachtregelopties zijn alleen van toepassing op VSTest-projecten en niet op MTP-testtoepassingen.
- MTP-specifieke opdrachtregelopties die hierna
--worden opgegeven, worden behandeld als RunSettings-argumenten voor VSTest-projecten.
Belangrijke punten
- Om MTP-testapplicaties in
dotnet testVSTest-modus uit te voeren, moet uMicrosoft.Testing.Platform.MSBuildgebruiken, geeft u MTP-specifieke opdrachtregelopties door na de extra--, en stelt uTestingPlatformDotnetTestSupportin optrue. - VSTest-georiënteerde opdrachtregelopties worden op de achtergrond genegeerd.
Vanwege deze problemen heeft .NET een nieuwe dotnet test modus geïntroduceerd die specifiek is ontworpen voor MTP. We raden MTP-gebruikers aan om over te stappen van de VSTest-modus dotnet test naar de nieuwe modus met de .NET 10 SDK.
De MTP-modus (Microsoft.Testing.Platform) van dotnet test
Om de problemen aan te pakken die optreden bij het uitvoeren van dotnet test met MTP in VSTest-modus, introduceerde .NET een nieuwe modus in de .NET 10 SDK die specifiek is ontworpen voor MTP.
Als u deze modus wilt inschakelen, voegt u de volgende configuratie toe aan uw global.json bestand:
{
"test": {
"runner": "Microsoft.Testing.Platform"
}
}
Belangrijk
De dotnet test ervaring voor MTP wordt alleen ondersteund in Microsoft.Testing.Platform versie 1.7 en hoger.
Omdat deze modus speciaal is ontworpen voor Microsoft.Testing.Platform, zijn noch TestingPlatformDotnetTestSupport noch de aanvullende -- vereist.
Belangrijk
Deze modus is alleen compatibel met Microsoft.Testing.Platform versie 1.7.0 en hoger.
Belangrijk
Als uw testproject VSTest ondersteunt, maar geen ondersteuning biedt voor MTP, wordt er een fout gegenereerd.
Hint
U kunt de opdrachtregelargumenten van uw testtoepassing aanpassen via TestingPlatformCommandLineArguments de eigenschap MSBuild:
<PropertyGroup>
...
<TestingPlatformCommandLineArguments>--minimum-expected-tests 10</TestingPlatformCommandLineArguments>
</PropertyGroup>
Migreren naar MTP-modus van dotnet test
Voor gebruikers van MTP die de VSTest-modus gebruiken dotnet test, zijn er enkele acties nodig om te migreren naar de nieuwere dotnet test ervaring:
- Voeg
testeen sectie toe aan uwglobal.jsonbestand, zoals hierboven wordt weergegeven. - Verwijder
TestingPlatformDotnetTestSupportde eigenschap MSBuild, omdat deze niet meer nodig is. - Verwijder de eigenschappen
TestingPlatformCaptureOutputenTestingPlatformShowTestsFailurevan MSBuild, omdat deze niet meer door de nieuwedotnet testworden gebruikt. - Verwijder de extra
--, bijvoorbeelddotnet test -- --report-trxzoudotnet test --report-trxmoeten worden. - Als u bijvoorbeeld een specifieke oplossing (of map met een oplossing) doorgeeft,
dotnet test MySolution.slnmoet dit wordendotnet test --solution MySolution.sln. - Als u bijvoorbeeld een specifiek project (of map met project) doorgeeft,
dotnet test MyProject.csprojmoet dit wordendotnet test --project MyProject.csproj. - Als u een specifieke dll doorgeeft, bijvoorbeeld
dotnet test path/to/UnitTests.dll, moet ditdotnet test --test-modules path/to/UnitTests.dllworden. Houd er rekening mee dat--test-modulesook globbing ondersteunt.