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 test
en 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
.
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.
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 test
VSTest-modus uit te voeren, moet uMicrosoft.Testing.Platform.MSBuild
gebruiken, geeft u MTP-specifieke opdrachtregelopties door na de extra--
, en stelt uTestingPlatformDotnetTestSupport
in 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.
Om deze modus in te schakelen, voeg een dotnet.config
bestand toe aan de root van de repository of oplossing.
[dotnet.test.runner]
name = "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>