VSTest.Console.exe parancssori beállítások

VSTest.Console.exe a tesztek futtatására szolgáló parancssori eszköz. A parancssorban tetszőleges sorrendben több lehetőséget is megadhat. Ezek a beállítások Általános parancssori beállítások.

Jegyzet

A Visual Studio MSTest-adaptere régebbi módban is működik (egyenértékű a tesztek futtatásával mstest.exe) a kompatibilitás érdekében. Örökölt módban nem tudja kihasználni a TestCaseFilter funkciót. Az adapter válthat örökölt módra, ha egy tesztbeállítást fájl van megadva, forcelegacymode igaz runsettings fájlban, vagy olyan attribútumok használatával, mint HostType.

Ha arm architektúrán alapuló gépen szeretne automatizált teszteket futtatni, VSTest.Console.exekell használnia.

Nyissa meg fejlesztői parancssori a parancssori eszköz használatához, vagy keresse meg az eszközt %Program Files(x86)%\Microsoft Visual Studio\<verzió>\<kiadás>\common7\ide\CommonExtensions\<Platform | Microsoft>.

Általános parancssori beállítások

Az alábbi táblázat felsorolja a VSTest.Console.exe gyakran használt beállításait és rövid leírását. Hasonló összegzést VSTest.Console/? parancssorba való beírásával tekinthet meg. A teljes referencia, beleértve az itt nem felsorolt belső és örökölt kapcsolókat is, tekintse meg vstest.console.exe parancssori beállításokat és kifejezetten a vstest-adattárban kihagyott kapcsolókat .

Opció Leírás
[tesztfájlnevek] Teszteket futtathat a megadott fájlokból. Több tesztfájlnév elválasztása szóközökkel.
Példák: mytestproject.dll, mytestproject.dll myothertestproject.exe
/Settings:[fájlnév] Teszteket futtathat további beállításokkal, például adatgyűjtőkkel. További információ: Egységtesztek konfigurálása .runsettings fájllal
Példa: /Settings:local.runsettings
/Tesztek:[tesztnév] A megadott értékeket tartalmazó neveket tartalmazó teszteket futtathat. Ez a parancs megegyezik a teljes tesztnévvel, beleértve a névteret is. Több érték megadásához vesszővel kell elválasztani őket.
Példa: /Tests:TestMethod1,testMethod2
A /Tests parancssori kapcsoló nem használható a /TestCaseFilter parancssori kapcsolóval.
/Párhuzamos Megadja, hogy a tesztek párhuzamosan legyenek végrehajtva. Alapértelmezés szerint legfeljebb a gép összes elérhető magja használható. A beállításfájlban használandó magok számát konfigurálhatja.
/InIsolation A teszteket izolált folyamatban futtatja.
Ez az elkülönítés kisebb valószínűséggel állítja le a vstest.console.exe folyamatot a tesztek hibái miatt, de a tesztek lassabban futnak.
/TestAdapterPath:[elérési út] Kényszeríti a vstest.console.exe folyamatot, hogy egyéni tesztadaptereket használjon egy megadott elérési útról (ha van ilyen) a tesztfuttatásban.
Példa: /TestAdapterPath:[pathToCustomAdapters]
/Platform:[platformtípus] Az aktuális futtatókörnyezetből meghatározott platform helyett az adott platformarchitektúrát kell használni. Az értékek nem érzékenyek a kis- és nagybetűkre; az elfogadott értékek a következők x86: , x64, ARM, ARM64, S390x, Ppc64le, RiscV64és LoongArch64.
A Windows csak az x86 és az x64 kényszeríthető megbízhatóan; az eredmények megadása ARM x64-ben a legtöbb rendszerben. Ne adja meg ezt a beállítást olyan futtatókörnyezetben való futtatáshoz, amely nem szerepel az érvényes értékek listájában.
/Framework: [keretrendszer verziója] A tesztelés végrehajtásához használandó cél .NET-verzió.
A Modern keretrendszer rövid űrlapjait a NuGet-keretrendszer elemzője fogadja el és elemzi, például net48, net6.0vagy net10.0 (valamint az olyan hosszú űrlapokat, mint az .NETFramework,Version=v4.8 és .NETCoreApp,Version=v10.0).
Az örökölt aliasok Framework35, Framework40, Framework45, FrameworkCore10és FrameworkUap10 szintén elfogadottak.
A TargetFrameworkAttribute használatával automatikusan észlelheti ezt a beállítást a szerelvényből, és alapértelmezés szerint akkor, Framework40 amikor az attribútum nincs jelen. Ezt a beállítást explicit módon kell megadnia, ha eltávolítja a TargetFrameworkAttribute a .NET Core-szerelvényekből.
Ha a cél keretrendszer Framework35, a tesztek a CLR 4.0 "kompatibilitási módban" futnak.
Példa: /Framework:net8.0
/TestCaseFilter:[kifejezés] Futtassa az adott kifejezésnek megfelelő teszteket.
<Kifejezés> formátuma <tulajdonság>=<érték>[|<Kifejezés>].
Példa: /TestCaseFilter:"Priority=1"
Példa: /TestCaseFilter:"TestCategory=Nightly|FullyQualifiedName=Namespace.ClassName.MethodName"
A /TestCaseFilter parancssori kapcsoló nem használható a /Tests parancssori kapcsolóval.
A kifejezések létrehozásáról és használatáról további információt TestCase szűrőcímű témakörben talál. Ha közvetlenül egy rendszerhéjba ír be szűrőt, tekintse meg a rendszerhéjban található Escape szűrőkifejezéseket.
/Környezet:[NÉV]=[ÉRTÉK] Beállítja egy környezeti változó értékét a tesztgazdafolyamathoz. Létrehozza a változót, ha nem létezik, és felülbírálja, ha igen. Ez a beállítás a /InIsolation parancsot jelenti, és arra kényszeríti a teszteket, hogy izolált folyamaton fussanak. Adja meg többször a beállítást több változó beállításához. Rövid űrlap: /e.
Példa: /e:VARIABLE1=VALUE1
/? Használati adatokat jelenít meg.
/Logger:[uri/friendlyname] Adjon meg egy naplózót a teszteredményekhez. Adja meg többször a paramétert több naplózó engedélyezéséhez.
Példa: Az eredmények Visual Studio-teszteredmény-fájlba (TRX) való naplózásához használja a
/Logger:trx
[; LogFileName=<Alapértelmezett értékek egyedi fájlnévre>]
Ahelyett LogFilePrefix=<prefix>LogFileName , hogy futtatásonként külön, időbélyegzős fájlt tárolna. LogFileName explicit nevet ad meg, és felülírja az előző fájlt, míg LogFilePrefix nem.
További információ: Naplózási példa.
/ListTests:[fájlnév] Listázza a felderített teszteket az adott teszttárolóból. Rövid űrlap: /lt.
Megjegyzés: A /TestCaseFilter beállításnak nincs hatása a tesztek listázásakor; csak azt szabályozza, hogy mely tesztek fussanak le.
/Blame A teszteket hibás módban futtatja. Ez a lehetőség hasznos lehet olyan problémás tesztek elkülönítésében, amelyek a tesztgazda összeomlását okozzák. Összeomlás észlelésekor létrehoz egy sorozatfájlt TestResults/<Guid>/<Guid>_Sequence.xml, amely rögzíti az összeomlás előtt futtatott tesztek sorrendjét.
Gyűjthet például összeomlási vagy lefagyásos memóriaképet /Blame:CollectDump;DumpType=full/Blame:CollectHangDump;TestTimeout=90m;HangDumpType=miniis. Az egyenértékű dotnet test kapcsolók és --blame-hanga --blame-crash .
A teljes beállítási mátrix és a memóriakép-gyűjtési követelményekért tekintse meg az adatgyűjtő hibáztatása című témakört.
/Diag:[fájlnév] Diagnosztikai nyomkövetési naplókat ír a megadott fájlba.
Állítsa be a nyomkövetési szintet /Diag:<file name>;tracelevel=<off\|error\|warning\|info\|verbose> (az alapértelmezett érték verbose).
/ResultsDirectory:[elérési út] Ha nem létezik, a teszteredmények könyvtára a megadott elérési úton jön létre.
Példa: /ResultsDirectory:<pathToResultsDirectory>
/ParentProcessId:[parentProcessId] Az aktuális folyamat elindításáért felelős szülőfolyamat folyamatazonosítója.
/Port:[port] A szoftvercsatorna-kapcsolat portja és az eseményüzenetek fogadása.
/Collect:[dataCollector friendlyName] Engedélyezi az adatgyűjtőt a tesztfuttatáshoz. További információk.
@[fájl] További beállításokat olvas be a megadott válaszfájlból. A fájl argumentumait szóközök (szóközök vagy újvonalak) választják el egymástól, és az idézés támogatott, így a beállítások több sorra is kiterjedhetnek.
Példa: vstest.console.exe @options.rsp

Borravaló

A beállítások és értékek nem megkülönböztetik a kis- és nagybetűket.

Példák

A vstest.console.exe futtatásának szintaxisa a következő:

vstest.console.exe [TestFileNames] [Options]

Alapértelmezés szerint a parancs 0 értéket ad vissza, amikor a rendszer a szokásos módon kilép, még akkor is, ha nem talál teszteket. Ha nem nulla értéket szeretne visszaadni, ha nem talál teszteket, használja <TreatNoTestsAsError>true</TreatNoTestsAsError> runsettings lehetőséget.

Az alábbi parancs vstest.console.exe futtat a teszttár myTestProject.dll:

vstest.console.exe myTestProject.dll

Az alábbi parancs vstest.console.exe futtat több tesztfájllal. Különítse el a tesztfájlneveket szóközökkel:

vstest.console.exe myTestFile.dll myOtherTestFile.dll

Az alábbi parancs vstest.console.exe futtat több beállítással. A teszteket a myTestFile.dll fájlban egy izolált folyamat során futtatja, és a Local.RunSettings fájlban megadott beállításokat használja. Emellett csak a "Priority=1" jelölésű teszteket futtatja, és naplózza az eredményeket egy .trx fájlba.

vstest.console.exe myTestFile.dll /Settings:Local.RunSettings /InIsolation /TestCaseFilter:"Priority=1" /Logger:trx

Az alábbi parancs a teszttár myTestProject.dll/blame beállításával futtatja vstest.console.exe:

vstest.console.exe myTestFile.dll /blame

Ha egy teszt gazdagép összeomlik, a rendszer létrehozza a sequence.xml fájlt. A fájl a tesztek teljes neveit tartalmazza a végrehajtás sorrendjében egészen az összeomlás időpontjában futó konkrét tesztig.

Ha nincs tesztgazda összeomlása, a sequence.xml fájl nem jön létre.

Példa egy létrehozott sequence.xml fájlra:

<?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>

Ebben az esetben az <Test Name> utolsóként felsorolt teszt az összeomlás időpontjában futott.

Kilépési kódok

vstest.console.exe két kilépési kód egyikét adja vissza:

Code Meaning
0 Sikeres. A kért művelet befejeződött, és egy tesztfuttatáshoz az összes végrehajtott teszt sikeres volt.
1 Hiba. Például egy vagy több teszt sikertelen volt, futási hiba jelent meg, a parancssor érvénytelen volt vagy hiányzik, a tesztforrás nem tölthető be, vagy a futtatás megszakadt vagy megszakadt.

A folyamat soha nem ad vissza semmilyen más értéket. Amikor teszteket futtat, dotnet testa .NET SDK nem nulla kilépési kódot jelenít meg, ha a futtatás ugyanúgy meghiúsul.

Ha a felderítés nem talál egyező teszteket, a futó hibaüzenet helyett egy figyelmeztetést nyomtat ki, és alapértelmezés szerint továbbra is visszaadja 0a hibát. A .runsettings fájl RunConfiguration elemében állítsa be<TreatNoTestsAsError>true</TreatNoTestsAsError>, hogy egy olyan futtatást hozzon létre, amely ehelyett nulla tesztet 1 észlel vagy jelöl ki. További információ: Egységtesztek konfigurálása .runsettings-fájl használatával.

Escape filter expressions in the shell

A /TestCaseFilter kifejezést a rendszerhéj és a tesztplatform is elemzi, ezért egyes karaktereknek a rendszerhéjspecifikus menekülésre van szükségük, mielőtt vstest.console.exe megkapnák őket. A teljes kifejezés idézése, mint a cikk korábbi példáiban, elkerüli a legtöbb problémát. Az alábbi esetekben további ellátásra van szükség:

  • PowerShell: A vessző (,) a tömb operátora, a pontosvessző (;) pedig egy utasításelválasztó. Idézzük a teljes szűrőkifejezést, hogy például szó szerint át legyen haladva /TestCaseFilter:"FullyQualifiedName=MyNamespace.MyClass.MyMethod".

  • Bash és zsh (Linux és macOS): A ! (nem tartalmaz) operátor használatakor !~ , például --filter FullyQualifiedName\!~IntegrationTestsdotnet testa . Olyan értékeket is idézhet, amelyek speciális jelentéssel bírnak a rendszerhéjban, például <: , >vagy , egy általános típusú argumentumlistában:

    dotnet test --filter "FullyQualifiedName=MyNamespace.MyClass<Type1,Type2>.MyMethod"
    

A teljes szűrési referencia és a tesztelési keretrendszerenkénti támogatott tulajdonságokért tekintse meg a TestCase szűrőt.

Példa naplózásra

Minden naplózó saját paramétereket határoz meg. A trx-sel ellentétben a konzolnaplózó lehetővé teszi a részletességi szint beállítását. További információkért írja be VSTest.Console/? a parancssorba.

Íme egy példa a konzolnaplózóra:

vstest.console.exe myTestFile.dll /logger:console;verbosity=detailed

A támogatott részletességi szintek közé tartozik a csendes, a minimális, a normál és a részletes.

A PowerShellben idézőjeleket kell használnia:

vstest.console.exe myTestFile.dll /logger:"console;verbosity=detailed"

Az elérhető naplózók teljes listáját, valamint a saját naplózó készítésére vonatkozó utasításokat lásd: Jelentéskészítési teszteredmények a vstest-adattárban.

UWP-példa

UWP esetén az appxrecipe-fájlt DLL helyett hivatkozni kell.

vstest.console.exe /Logger:trx /Platform:x64 /framework:frameworkuap10 UnitTestsUWP\bin\x64\Release\UnitTestsUWP.build.appxrecipe

Környezeti változók

A tesztplatform számos környezeti változót ismer fel. A parancssorból végzett tesztek futtatásakor az alábbiak a leginkább hasznosak. A teljes listát a tesztplatform által a vstest-adattárban értelmezett környezeti változókban találja.

Variable Leírás
VSTEST_CONNECTION_TIMEOUT Időtúllépés másodpercben a tesztplatform-összetevők (vstest.console.exe, testhost és adatgyűjtő) közötti kapcsolatok létrehozásához. Az alapértelmezett érték 90. Növelje a lassú gépeken, vagy ha a hálózati késés a kapcsolat időtúllépését okozza.
VSTEST_DIAG Engedélyezi a diagnosztikai naplózást, és megadja a naplófájl elérési útját. Egyenértékű a /Diag beállítással.
VSTEST_DIAG_VERBOSITY A diagnosztikai naplózás részletességét állítja be, ha VSTEST_DIAG engedélyezve van. Az érvényes értékek a következőkVerbose: , InfoWarning, és Error (az alapértelmezett értékVerbose).
VSTEST_HOST_DEBUG Állítsa be a nem üres értéket a testhost folyamat hibakeresésének engedélyezéséhez.
VSTEST_RUNNER_DEBUG Állítsa be a nem üres értéket a futó hibakeresésének engedélyezéséhez (vstest.console.exe).
VSTEST_DUMP_PATH Felülbírálja az alapértelmezett könyvtárat, amelyben az összeomlási memóriaképek tárolódnak.
VSTEST_DUMP_FORCEPROCDUMP Állítsa be a nem üres értéket, hogy kényszerítse a ProcDumpot az összeomlási memóriaképek gyűjtésére.
VSTEST_DISABLE_UTF8_CONSOLE_ENCODING Állítsa be az 1 UTF-8 kódolás letiltására a konzol kimenetén.
VSTEST_CONSOLE_PATH A .NET SDK dotnet test továbbító alkalmazása által használtvstest.console.exevégrehajtható fájl elérési útja. Egyenértékű a -p:VSTestConsolePath projekten való futtatáskor dotnet test .