Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ez a cikk betekintést nyújt a dotnet test CLI parancs használatába, beleértve a VSTesttel és a Microsoft.Testing.Platform (MTP) termékkel való történeti kompatibilitást.
A dotnet test parancs két elsődleges módban működik:
-
VSTest mód: Ez az alapértelmezett mód a
dotnet testesetében, és csak a .NET 10 SDK előtt érhető el. Elsősorban VSTesthez készült, de a Microsoft.Testing.Platform.MSBuild NuGet-csomagon keresztül a Microsoft.Testing.Platform tesztek is futtathatók. - Microsoft.Testing.Platform mód: A .NET 10 SDK-val bevezetett mód kizárólag a Microsoft.Testing.Platform segítségével készült tesztalkalmazásokat támogatja.
Jótanács
A parancssori felületre vonatkozó referencia: dotnet-teszt.
VSTest mód dotnet test
Hosszú ideig a VSTest volt az egyetlen tesztplatform .NET. Következésképpen dotnet test kizárólag a VSTesthez készült, összes parancssori lehetőségét is a VSTestre szabták.
A folyamat magában foglalja az VSTest MSBuild cél meghívását, amely más belső célokat aktivál a futtatáshoz, és végül a vstest.console futtatását. Az összes dotnet test parancssori beállítás a vstest.console megfelelőire lesz lefordítva.
MTP-projektek futtatása VSTest módban
dotnet test VSTest-projektek VSTest módban való futtatására lett tervezve. Azonban az MTP-projekteket a dotnet test VSTest módban is futtathatja a Microsoft.Testing.Platform.MSBuild csomag használatával. A felhasználó szempontjából ez a támogatás a TestingPlatformDotnetTestSupport MSBuild tulajdonság true beállításával van engedélyezve (ez false alapértelmezés szerint van beállítva visszamenőleges kompatibilitási okokból). Amikor ennek a tulajdonságnak az értéke true, a Microsoft.Testing.Platform.MSBuild módosítja a VSTest cél viselkedését, és átirányítja a InvokeTestingPlatform hívására.
InvokeTestingPlatform egy MSBuild célobjektum a Microsoft.Testing.Platform.MSBuild részeként, amely felelős az MTP-tesztalkalmazások végrehajtható fájlként való helyes futtatásáért. Ebben a módban a VSTest-specifikus parancssori beállításokat, mint például --logger, a rendszer csendesen figyelmen kívül hagyja. Az MTP-specifikus argumentumokat, például --report-trx, úgy adhatja hozzá, hogy hozzáfűzi őket egy további -- után. Például: dotnet test -- --report-trx. Az MTP 1.9-ben MTP0001 kóddal rendelkező figyelmeztetés jön létre, amikor egy csendesen figyelmen kívül hagyott argumentumot észlel.
Megjegyzés:
Az MSTest és az NUnit a Microsoft.Testing.Extensions.VSTestBridge csomagot használja. A EnableMSTestRunner vagy EnableNUnitRunner beállításával (amely lehetővé teszi a Microsoft.Testing.Platformot), a tesztprojekt támogatni fogja mind a VSTestet, mind pedig a Microsoft.Testing.Platformot.
Ebben a forgatókönyvben, ha a VSTest módot dotnet test használja, és nem igaz értékre állítja be TestingPlatformDotnetTestSupport-t, akkor lényegében teljes mértékben a VSTesttel fut, mintha EnableMSTestRunner és EnableNUnitRunner nem lennének igazra állítva.
Megjegyzés:
Erősen ajánlott beállítani a(z) TestingPlatformDotnetTestSupport tulajdonságot a(z) Directory.Build.props-ben. Ez biztosítja, hogy ne kelljen egyenként hozzáadnia minden egyes tesztprojektfájlhoz. Emellett megakadályozza egy olyan új tesztprojekt bevezetésének kockázatát, amely nem állítja be ezt a tulajdonságot, ami olyan megoldást eredményezhet, amelyben egyes projektek VSTestet használnak, míg mások Microsoft. Testing.Platform. Előfordulhat, hogy ez a vegyes konfiguráció nem működik megfelelően, és nem támogatott forgatókönyv.
Fontos
Az MTP-projektek VSTest módban történő futtatása örököltnek tekinthető a .NET 10 SDK újabb felhasználói élménye mellett. A Microsoft.Testing.Platform 2-es verziójában megszűnik az ebben a módban való futtatás támogatása, ha .NET 10 SDK-val futtatják. A támogatás a .NET 9 SDK-hoz és korábbi verziókhoz is elérhető marad a visszamenőleges kompatibilitás érdekében.
További információ: Migrálás MTP módba dotnet test.
Az alábbi lista a dotnet test parancs parancssori beállításait ismerteti VSTest módban, amelyeket a Microsoft támogat. Testing.Platform. Ezek a beállítások a buildelési folyamatra vonatkoznak, és nem adhatók át a VSTestnek, ezért működnek együtt az MTP-vel.
-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>
Jótanács
A tesztalkalmazás parancssori argumentumait az MSBuild tulajdonságon keresztül TestingPlatformCommandLineArguments szabhatja testre:
<PropertyGroup>
...
<TestingPlatformCommandLineArguments>--minimum-expected-tests 10</TestingPlatformCommandLineArguments>
</PropertyGroup>
Hiba megjelenítése tesztenként
Alapértelmezés szerint a tesztelési hibák egy .log fájlba vannak összegezve, és tesztprojektenként egyetlen hiba lesz jelentve az MSBuildnek.
A sikertelen tesztenkénti hibák megjelenítéséhez adja meg a parancssorban a -p:TestingPlatformShowTestsFailure=true, vagy adja hozzá a <TestingPlatformShowTestsFailure>true</TestingPlatformShowTestsFailure> tulajdonságot a projektfájlhoz.
Parancssorban:
dotnet test -p:TestingPlatformShowTestsFailure=true
Teljes platformkimenet megjelenítése
Alapértelmezés szerint minden konzolkimenet, amelyet a mögöttes teszt futtatható fájl ír, rögzítésre és elrejtésre kerül a felhasználó elől. Ez magában foglalja a szalagcímet, a verzióinformációkat és a formázott tesztelési információkat.
Ha az MSBuild kimenettel együtt szeretné megjeleníteni ezeket az információkat, használja a <TestingPlatformCaptureOutput>false</TestingPlatformCaptureOutput>.
Ez a beállítás nem befolyásolja, hogy a tesztelési keretrendszer hogyan rögzíti a konzolra a Console.WriteLine-val vagy más hasonló módon írt felhasználói kimenetet.
Parancssorban:
dotnet test -p:TestingPlatformCaptureOutput=false
Speciális technikai részletek
dotnet test VSTest módban a -- runSettings argumentumok jelzésére szolgál. Eredetileg úgy tervezték, dotnet test hogy ezeket az argumentumokat MSBuild nevű VSTestCLIRunSettingstulajdonságként adja át. Ezért az MTP-tesztalkalmazások VSTest módban történő futtatásakor az "alkalmazásargumentumok" értékének VSTestCLIRunSettings újbóli felhasználása történik.
A VSTest és a Microsoft.Testing.Platform (MTP) kombinálása
Ha a dotnet test szoftvert VSTest módban futtatja, javasoljuk, hogy ne foglalja bele a VSTestet és a Microsoft.Testing.Platformot ugyanabba a megoldásba.
Ez a forgatókönyv hivatalosan nem támogatott, és tisztában kell lennie az alábbiakkal:
- A VSTest-specifikus parancssori beállítások csak a VSTest-projektekre vonatkoznak, az MTP-tesztalkalmazásokra nem.
- Az után
--megadott MTP-specifikus parancssori beállítások a VSTest-projektek RunSettings argumentumaiként lesznek kezelve.
Főbb elvitelek
- Az MTP-tesztalkalmazások
dotnet testVSTest módban való futtatásához használja aMicrosoft.Testing.Platform.MSBuild, adja meg az MTP-specifikus parancssori lehetőségeket a további--után, és állítsaTestingPlatformDotnetTestSupportértékéttrue-re. - A VSTest-orientált parancssori beállításokat a rendszer csendesen figyelmen kívül hagyja.
Ezen problémák miatt a .NET bevezetett egy új dotnet test módot, amelyet kifejezetten az MTP-hez terveztek. Arra ösztönözzük az MTP-felhasználókat, hogy a VSTest dotnet test módról váltson át az új módra a .NET 10 SDK-val.
Microsoft. A dotnet test tesztelési.platform (MTP) üzemmódja
A dotnet test VSTest módban való futtatásakor felmerülő problémák megoldásához .NET bevezetett egy új módot a .NET 10 SDK-ban, amely kifejezetten MTP-hez készült.
A mód engedélyezéséhez adja hozzá a következő konfigurációt a global.json fájlhoz:
{
"test": {
"runner": "Microsoft.Testing.Platform"
}
}
Fontos
Az MTP dotnet test felülete csak az Microsoft.Testing.Platform 1.7-es és újabb verzióiban támogatott.
Mivel ez a mód kifejezetten a Microsoft.Testing.Platform számára készült, sem TestingPlatformDotnetTestSupport, sem a további -- nem szükséges.
Fontos
Ez a mód csak a Microsoft.Testing.Platform 1.7.0-s és újabb verzióival kompatibilis.
Fontos
Ha a tesztprojekt támogatja a VSTestet, de nem támogatja az MTP-t, hiba jön létre.
Jótanács
A tesztalkalmazás parancssori argumentumait az MSBuild tulajdonságon keresztül TestingPlatformCommandLineArguments szabhatja testre:
<PropertyGroup>
...
<TestingPlatformCommandLineArguments>--minimum-expected-tests 10</TestingPlatformCommandLineArguments>
</PropertyGroup>
Migrálás MTP-módba dotnet test
A VSTest módot dotnet testhasználó MTP-felhasználók számára kevés művelet szükséges az újabb dotnet test felületre való migráláshoz:
- Adjon hozzá
testszakaszt aglobal.jsonfájlhoz a fent látható módon. - Távolítsa el
TestingPlatformDotnetTestSupportaz MSBuild tulajdonságot, mivel már nincs rá szükség. - Távolítsa el
TestingPlatformCaptureOutputésTestingPlatformShowTestsFailureMSBuild tulajdonságokat, mivel az újdotnet testmár nem használja őket. - Törölje a felesleges
--elemet, például adotnet test -- --report-trxlegyendotnet test --report-trx. - Ha például egy adott megoldást (vagy a megoldást tartalmazó könyvtárat) ad át,
dotnet test MySolution.slnennek a következőnek kell lenniedotnet test --solution MySolution.sln: . - Ha például egy adott projektet (vagy projektet tartalmazó könyvtárat) ad át,
dotnet test MyProject.csprojakkor ennek a következőnek kell lenniedotnet test --project MyProject.csproj: . - Ha egy adott dll-t ad át, például
dotnet test path/to/UnitTests.dll, akkor ez a következő lesz:dotnet test --test-modules path/to/UnitTests.dll. Vegye figyelembe, hogy a--test-modulesglobbingot is támogatja.