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.
VSTest.Console.exe is het opdrachtregelprogramma voor het uitvoeren van tests. U kunt verschillende opties opgeven in elke volgorde op de opdrachtregel. Deze opties worden weergegeven in Algemene opdrachtregelopties.
Notitie
De MSTest-adapter in Visual Studio werkt ook in de verouderde modus (gelijk aan het uitvoeren van tests met mstest.exe) voor compatibiliteit. In de verouderde modus kan deze niet profiteren van de functie TestCaseFilter. De adapter kan overschakelen naar de verouderde modus wanneer een testettings bestand is opgegeven, forcelegacymode is ingesteld op true in een runettings bestand of door kenmerken zoals HostTypete gebruiken.
Als u geautomatiseerde tests wilt uitvoeren op een machine op basis van een ARM-architectuur, moet u VSTest.Console.exegebruiken.
Open opdrachtprompt voor ontwikkelaars om het opdrachtregelprogramma te gebruiken. U kunt het hulpprogramma ook vinden in %Program Files(x86)%\Microsoft Visual Studio\<versie>\<edition>\common7\ide\CommonExtensions\<Platform | Microsoft>.
Algemene opdrachtregelopties
De volgende tabel bevat de veelgebruikte opties voor VSTest.Console.exe en korte beschrijvingen. U kunt een vergelijkbare samenvatting zien door VSTest.Console/? te typen op een opdrachtregel. Zie vstest.console.exe opdrachtregelopties en specifiek weggelaten switches in de vstest-opslagplaats voor een volledig overzicht, inclusief interne en verouderde switches die hier niet worden vermeld.
| Optie | Beschrijving |
|---|---|
| [bestandsnamen] | Voer tests uit vanaf de opgegeven bestanden. Scheid meerdere namen van testbestanden met spaties. Voorbeelden: mytestproject.dll, mytestproject.dll myothertestproject.exe |
| /Settings:[bestandsnaam] | Voer tests uit met aanvullende instellingen, zoals gegevensverzamelaars. Zie Moduletests configureren met behulp van een .runsettings-bestand voor meer informatie Voorbeeld: /Settings:local.runsettings |
| /Tests:[testnaam] | Voer tests uit met namen die de opgegeven waarden bevatten. Deze opdracht komt overeen met de volledige testnaam, inclusief de naamruimte. Als u meerdere waarden wilt opgeven, scheidt u deze door komma's. Voorbeeld: /Tests:TestMethod1,testMethod2De opdrachtregeloptie /Tests kan niet worden gebruikt met de opdrachtregeloptie /TestCaseFilter . |
| /Parallel | Hiermee geeft u op dat de tests parallel worden uitgevoerd. Standaard kunnen maximaal alle beschikbare kernen op de machine worden gebruikt. U kunt het aantal kernen configureren dat moet worden gebruikt in een instellingenbestand. |
| /InIsolation- | Voert de tests uit in een geïsoleerd proces. Deze isolatie maakt het vstest.console.exe proces minder waarschijnlijk gestopt op een fout in de tests, maar tests kunnen langzamer worden uitgevoerd. |
| /TestAdapterPath:[pad] | Dwingt het vstest.console.exe proces om aangepaste testadapters te gebruiken vanaf een opgegeven pad (indien aanwezig) in de testuitvoering. Voorbeeld: /TestAdapterPath:[pathToCustomAdapters] |
| /Platform:[platformtype] | Dwingt de opgegeven platformarchitectuur te gebruiken, in plaats van het platform dat is bepaald op basis van de huidige runtime. Waarden zijn niet hoofdlettergevoelig; de geaccepteerde waarden zijn x86, , x64ARM, , ARM64, S390x, Ppc64le, , , en .LoongArch64RiscV64Op Windows kan alleen x86 en x64 betrouwbaar worden geforceerd; het opgeven van ARM resultaten in x64 op de meeste systemen. Geef deze optie niet op om uit te voeren op een runtime die zich niet in de lijst met geldige waarden bevindt. |
| /Framework: [frameworkversie] | Doelversie van .NET die moet worden gebruikt voor testuitvoering. Korte formulieren voor moderne frameworks worden geaccepteerd en geparseerd door de NuGet-frameworkparser, bijvoorbeeld net48, net6.0of net10.0 (evenals de lange formulieren zoals .NETFramework,Version=v4.8 en .NETCoreApp,Version=v10.0).De verouderde aliassen Framework35, Framework40, Framework45en FrameworkCore10FrameworkUap10 worden ook geaccepteerd.TargetFrameworkAttribute wordt gebruikt om deze optie automatisch te detecteren vanuit uw assembly en wordt standaard Framework40 ingesteld op wanneer het kenmerk niet aanwezig is. U moet deze optie expliciet opgeven als u de TargetFrameworkAttribute- uit uw .NET Core-assembly's verwijdert.Als het doelframework is opgegeven als Framework35, worden de tests uitgevoerd in de CLR 4.0 -compatibiliteitsmodus. Voorbeeld: /Framework:net8.0 |
| /TestCaseFilter:[expressie] | Voer tests uit die overeenkomen met de opgegeven expressie. <Expressie> de notatie heeft <eigenschap>=<waarde>[|<Expressie>]. Voorbeeld: /TestCaseFilter:"Priority=1"Voorbeeld: /TestCaseFilter:"TestCategory=Nightly|FullyQualifiedName=Namespace.ClassName.MethodName"De opdrachtregeloptie /TestCaseFilter kan niet worden gebruikt met de opdrachtregeloptie /Tests . Zie TestCase-filtervoor meer informatie over het maken en gebruiken van expressies. Wanneer u een filter rechtstreeks in een shell typt, raadpleegt u Escape-filterexpressies in de shell. |
| /Environment:[NAME]=[VALUE] | Hiermee stelt u de waarde van een omgevingsvariabele in voor het testhostproces. Hiermee maakt u de variabele als deze niet bestaat en overschrijft u deze als dat wel het geval is. Deze optie impliceert /InIsolation en dwingt de tests uit te voeren in een geïsoleerd proces. Geef de optie meerdere keren op om meerdere variabelen in te stellen. Korte vorm: /e. Voorbeeld: /e:VARIABLE1=VALUE1 |
| /? | Geeft gebruiksgegevens weer. |
| /Logger:[URI/friendlyname] | Geef een logger op voor testresultaten. Geef de parameter meerdere keren op om meerdere logboekregistraties in te schakelen. Voorbeeld: Als u resultaten wilt registreren in een Visual Studio Test Results File (TRX), gebruikt u /Logger:trx- [; LogFileName=<Standaard ingesteld op unieke bestandsnaam>] Gebruik LogFilePrefix=<prefix> in plaats van LogFileName een afzonderlijk, tijdstempelbestand per uitvoering te bewaren.
LogFileName stelt een expliciete naam in en overschrijft het vorige bestand, terwijl LogFilePrefix dat niet het probleem is.Zie het voorbeeld van logboekregistratie voor meer informatie. |
| /ListTests:[bestandsnaam] | Toont gedetecteerde tests uit de opgegeven testcontainer. Korte vorm: /lt. Opmerking: de optie /TestCaseFilter heeft geen effect bij het weergeven van tests; het bepaalt alleen welke tests worden uitgevoerd. |
| /Blame | Voert de tests uit in de schuldmodus. Deze optie is handig bij het isoleren van problematische tests waardoor de testhost vastloopt. Wanneer er een crash wordt gedetecteerd, wordt er een reeksbestand gemaakt in TestResults/<Guid>/<Guid>_Sequence.xml waarmee de volgorde wordt vastgelegd van tests die vóór de crash zijn uitgevoerd.U kunt ook een crash of hangdump verzamelen, bijvoorbeeld /Blame:CollectDump;DumpType=full of /Blame:CollectHangDump;TestTimeout=90m;HangDumpType=mini. De equivalente dotnet test schakelopties zijn --blame-crash en --blame-hang.Zie Gegevensverzamelaar de schuld geven voor de volledige optiematrix en dumpverzamelingsvereisten. |
| /Diag:[bestandsnaam] | Hiermee schrijft u diagnostische traceringslogboeken naar het opgegeven bestand. Stel het traceringsniveau in met /Diag:<file name>;tracelevel=<off\|error\|warning\|info\|verbose> (standaard is verbose). |
| /ResultsDirectory:[pad] | De map met testresultaten wordt gemaakt in het opgegeven pad als deze niet bestaat. Voorbeeld: /ResultsDirectory:<pathToResultsDirectory> |
| /ParentProcessId:[parentProcessId] | Proces-id van het bovenliggende proces dat verantwoordelijk is voor het starten van het huidige proces. |
| /Port:[poort] | De poort voor socketverbinding en het ontvangen van de gebeurtenisberichten. |
| /Collect:[dataCollector friendlyName] | Hiermee schakelt u gegevensverzamelaar in voor de testuitvoering. Meer informatie. |
| @[bestand] | Leest aanvullende opties uit het opgegeven antwoordbestand. Argumenten in het bestand worden gescheiden door spaties (spaties of nieuwe regels) en quoting worden ondersteund, zodat opties meerdere regels kunnen omvatten. Voorbeeld: vstest.console.exe @options.rsp |
Fooi
De opties en waarden zijn niet hoofdlettergevoelig.
Voorbeelden
De syntaxis voor het uitvoeren van vstest.console.exe is:
vstest.console.exe [TestFileNames] [Options]
Standaard retourneert de opdracht 0 wanneer deze normaal wordt afgesloten, zelfs als er geen tests worden gedetecteerd. Als u een niet-nulwaarde wilt retourneren als er geen tests worden gedetecteerd, gebruikt u de optie <TreatNoTestsAsError>true</TreatNoTestsAsError> runettings.
Met de volgende opdracht wordt vstest.console.exe uitgevoerd voor de testbibliotheek myTestProject.dll:
vstest.console.exe myTestProject.dll
Met de volgende opdracht wordt vstest.console.exe uitgevoerd met meerdere testbestanden. Namen van testbestanden scheiden met spaties:
vstest.console.exe myTestFile.dll myOtherTestFile.dll
Met de volgende opdracht wordt vstest.console.exe uitgevoerd met verschillende opties. De tests worden uitgevoerd in het myTestFile.dll-bestand in een geïsoleerd proces en worden instellingen gebruikt die zijn opgegeven in het bestand Local.RunSettings. Daarnaast worden alleen tests uitgevoerd die zijn gemarkeerd als Priority=1 en worden de resultaten geregistreerd in een TRX--bestand.
vstest.console.exe myTestFile.dll /Settings:Local.RunSettings /InIsolation /TestCaseFilter:"Priority=1" /Logger:trx
Met de volgende opdracht wordt vstest.console.exe uitgevoerd met de optie /blame voor de testbibliotheek myTestProject.dll:
vstest.console.exe myTestFile.dll /blame
Als er een crash van de testhost is opgetreden, wordt het sequence.xml-bestand gegenereerd. Het bestand bevat volledig gekwalificeerde namen van de tests in hun volgorde van uitvoering tot en met de specifieke test die werd uitgevoerd op het moment van de crash.
Als er geen testhostcrash is, wordt het sequence.xml bestand niet gegenereerd.
Voorbeeld van een gegenereerd sequence.xml-bestand:
<?xml version="1.0"?>
<TestSequence>
<Test Name="TestProject.UnitTest1.TestMethodB" Source="D:\repos\TestProject\TestProject\bin\Debug\TestProject.dll" />
<Test Name="TestProject.UnitTest1.TestMethodA" Source="D:\repos\TestProject\TestProject\bin\Debug\TestProject.dll" />
</TestSequence>
In dit geval is de <Test Name> vermelde laatste test die werd uitgevoerd op het moment van de crash.
Afsluitcodes
vstest.console.exe retourneert een van de twee afsluitcodes:
| Code | Meaning |
|---|---|
0 |
Geslaagd. De aangevraagde bewerking is voltooid en, voor een testuitvoering, zijn alle uitgevoerde tests geslaagd. |
1 |
Mislukking. Een of meer tests zijn bijvoorbeeld mislukt, er is een uitvoeringsfout gerapporteerd, de opdrachtregel is ongeldig of ontbreekt, een testbron kan niet worden geladen of de uitvoering is afgebroken of geannuleerd. |
Het proces retourneert nooit een andere waarde. Wanneer u tests uitvoertdotnet test, wordt met de .NET SDK een afsluitcode zonder nul weergegeven wanneer de uitvoering op dezelfde manier mislukt.
Wanneer detectie geen overeenkomende tests vindt, drukt de runner een waarschuwing af in plaats van een fout en wordt standaard nog steeds geretourneerd 0. Als u een uitvoering wilt maken die in plaats daarvan nultests detecteert 1 of selecteert, stelt u <TreatNoTestsAsError>true</TreatNoTestsAsError> in het element RunConfiguration van uw .runsettings-bestand in. Zie Eenheidstests configureren met behulp van een .runsettings-bestand voor meer informatie.
Escape-filterexpressies in de shell
Een /TestCaseFilter-expressie wordt geparseerd door zowel uw shell als het testplatform, dus sommige tekens hebben shell-specifieke escapes nodig voordat vstest.console.exe ze ontvangt. Als u de hele expressie citeert, zoals in de voorbeelden eerder in dit artikel, voorkomt u de meeste problemen. De volgende gevallen hebben extra zorg nodig:
PowerShell: de komma (
,) is de matrixoperator en de puntkomma (;) is een scheidingsteken voor de instructie. De volledige filterexpressie aanhalingstekens zodat deze letterlijk wordt doorgegeven, bijvoorbeeld/TestCaseFilter:"FullyQualifiedName=MyNamespace.MyClass.MyMethod".Bash en zsh (Linux en macOS): Escape
!met een backslash wanneer u de!~operator (niet bevat) gebruikt, bijvoorbeeld--filter FullyQualifiedName\!~IntegrationTestsmetdotnet test. Citeer ook waarden die tekens bevatten met speciale betekenis voor de shell, zoals<,>of,in een algemene type argumentlijst:dotnet test --filter "FullyQualifiedName=MyNamespace.MyClass<Type1,Type2>.MyMethod"
Zie TestCase-filter voor de volledige filterreferentie en ondersteunde eigenschappen per testframework.
Voorbeeld van logboekregistratie
Elke logger definieert zijn eigen parameters. In tegenstelling tot trx kunt u met de consolelogger uitgebreidheidsniveau instellen. Voor meer informatie typt VSTest.Console/? u op de opdrachtregel.
Hier volgt een voorbeeld voor de consolelogger:
vstest.console.exe myTestFile.dll /logger:console;verbosity=detailed
Ondersteunde uitgebreidheidsniveaus zijn stil, minimaal, normaal en gedetailleerd.
In PowerShell moet u aanhalingstekens gebruiken:
vstest.console.exe myTestFile.dll /logger:"console;verbosity=detailed"
Zie Testresultaten rapporteren in de vstest-opslagplaats voor de volledige lijst met beschikbare loggers, evenals instructies voor het ontwerpen van uw eigen logger.
UWP-voorbeeld
Voor UWP moet naar het appxrecipe-bestand worden verwezen in plaats van een DLL.
vstest.console.exe /Logger:trx /Platform:x64 /framework:frameworkuap10 UnitTestsUWP\bin\x64\Release\UnitTestsUWP.build.appxrecipe
Omgevingsvariabelen
Het testplatform herkent verschillende omgevingsvariabelen. Hier volgen de meest nuttige functies wanneer u tests vanaf de opdrachtregel uitvoert. Zie Omgevingsvariabelen die worden begrepen door het testplatform in de vstest-opslagplaats voor de volledige lijst.
| Variable | Beschrijving |
|---|---|
VSTEST_CONNECTION_TIMEOUT |
Time-out, in seconden, voor het tot stand brengen van verbindingen tussen testplatformonderdelen (vstest.console.exe, testhost en gegevensverzamelaar). De standaardwaarde is 90. Verhoog deze op trage machines of wanneer netwerklatentie time-outs voor verbindingen veroorzaakt. |
VSTEST_DIAG |
Hiermee schakelt u diagnostische logboekregistratie in en geeft u het pad naar het logboekbestand op. Gelijk aan de optie /Diag . |
VSTEST_DIAG_VERBOSITY |
Hiermee stelt u de uitgebreidheid van diagnostische logboekregistratie in wanneer VSTEST_DIAG deze is ingeschakeld. Geldige waarden zijnVerbose, , en ErrorWarning(standaard isVerboseInfo). |
VSTEST_HOST_DEBUG |
Ingesteld op een niet-lege waarde om foutopsporing van het testhost-proces in te schakelen. |
VSTEST_RUNNER_DEBUG |
Ingesteld op een niet-lege waarde om foutopsporing van de runner (vstest.console.exe) in te schakelen. |
VSTEST_DUMP_PATH |
Overschrijft de standaardmap waarin crashdumps worden opgeslagen. |
VSTEST_DUMP_FORCEPROCDUMP |
Stel deze waarde in op een waarde die niet leeg is om ProcDump te forceren voor het verzamelen van crashdumps. |
VSTEST_DISABLE_UTF8_CONSOLE_ENCODING |
Ingesteld op 1 het uitschakelen van UTF-8-codering op console-uitvoer. |
VSTEST_CONSOLE_PATH |
Pad naar het uitvoerbarevstest.console.exe dat wordt gebruikt door de doorstuur-app van dotnet test de .NET SDK. Gelijk aan -p:VSTestConsolePath wanneer u een project uitvoert dotnet test . |
Verwante onderwerpen
- Quickstart: tests uitvoeren vanaf de opdrachtregel in de vstest-opslagplaats
- Eenheidstests configureren met behulp van een .runsettings-bestand
- Een gegevensverzamelaar maken in de vstest-opslagplaats
- naslaginformatie over dotnet-testopdrachten