Megosztás a következőn keresztül:


Tesztelés "dotnet-teszt" használatával

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 test eseté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 test VSTest módban való futtatásához használja a Microsoft.Testing.Platform.MSBuild, adja meg az MTP-specifikus parancssori lehetőségeket a további -- után, és állítsa TestingPlatformDotnetTestSupport értékét true-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:

  1. Adjon hozzá test szakaszt a global.json fájlhoz a fent látható módon.
  2. Távolítsa el TestingPlatformDotnetTestSupport az MSBuild tulajdonságot, mivel már nincs rá szükség.
  3. Távolítsa el TestingPlatformCaptureOutput és TestingPlatformShowTestsFailure MSBuild tulajdonságokat, mivel az új dotnet testmár nem használja őket.
  4. Törölje a felesleges -- elemet, például a dotnet test -- --report-trx legyen dotnet test --report-trx.
  5. 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 lennie dotnet test --solution MySolution.sln: .
  6. 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 lennie dotnet test --project MyProject.csproj: .
  7. 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-modules globbingot is támogatja.