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


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

Ez a cikk bemutatja a CLI-parancsot, beleértve a VSTest és a dotnet test Microsoft.Testing.Platform (MTP) előzménykompatibilitását is.

A dotnet test parancs két elsődleges módban működik:

  • VSTest mód: Ez az alapértelmezett mód dotnet test a .NET 10 SDK előtt, és ez volt az egyetlen elérhető mód. Elsősorban VSTesthez készült, de Microsoft.Testing.Platform tesztet is futtathat a Microsoft.Testing.Platform.MSBuild NuGet-csomagon keresztül.
  • Microsoft.Testing.Platform mód: A .NET 10 SDK-val bevezetett mód kizárólag a Microsoft.Testing.Platform használatával 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 a .NET-ben. 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. Az MTP-projekteket dotnet test azonban 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 ez a tulajdonság be van állítva true, a Microsoft.Testing.Platform.MSBuild megváltoztatja a VSTest cél viselkedését, úgy, hogy átirányítja a hívást a InvokeTestingPlatform. InvokeTestingPlatform Egy MSBuild-cél, amely a Microsoft.Testing.Platform.MSBuild része, amely az MTP-tesztalkalmazások végrehajthatóként való helyes futtatásáért felelős. 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 Microsoft.Testing.Platform beállításával EnableMSTestRunner vagy EnableNUnitRunner (amely lehetővé teszi) a tesztprojekt támogatja a VSTestet és a Microsoft.Testing.Platformot is. 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 a Microsoft.Testing.Platformot használják. Előfordulhat, hogy ez a vegyes konfiguráció nem működik megfelelően, és nem támogatott forgatókönyv.

Fontos

A VSTest módban futó MTP-projektek örököltnek tekinthetők a .NET 10 SDK újabb felhasználói élménye mellett. Ha a .NET 10 SDK-val fut, a Microsoft.Testing.Platform 2.-es verziójában megszűnik az ebben a módban történő futtatás támogatása. 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 Microsoft.Testing.Platform által támogatott VSTest módban ismerteti a parancs parancssori dotnet test beállításait. 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>

Az MTP-projektek VSTest módban dotnet testvaló futtatásáról további információt a Microsoft.Testing.Platform használata VSTest móddal dotnet testcímű témakörben talál.

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) keverése

Amikor dotnet test VSTest módban fut, ajánlott elkerülni, hogy a VSTest és a Microsoft.Testing.Platform egyazon megoldásban legyenek.

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 Microsoft.Testing.Platform.MSBuild, adja meg az MTP-specifikus parancssori beállításokat az extra -- után, és állítsa be úgy TestingPlatformDotnetTestSupport-t, hogy az true legyen.
  • A VSTest-orientált parancssori beállításokat a rendszer csendesen figyelmen kívül hagyja.

Ezek miatt a problémák miatt a .NET egy kifejezetten MTP-hez tervezett új dotnet test módot vezetett be. Javasoljuk az MTP-felhasználókat, hogy a .NET 10 SDK-val váltanak át a VSTest dotnet test módról az új módra.

Microsoft.Testing.Platform (MTP) mód dotnet test

Az MTP VSTest módban való futtatásakor dotnet test felmerülő problémák megoldásához a .NET új módot vezetett be a kifejezetten MTP-hez tervezett .NET 10 SDK-ban.

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 élménye csak az 1.7-es verzióban és az azt követő verziókban Microsoft.Testing.Platform támogatott.

Mivel ez a mód kifejezetten a Microsoft.Testing.Platformhoz készült, sem TestingPlatformDotnetTestSupport-re, sem a további ---re nincs szükség.

Fontos

Ez a mód csak a Microsoft.Testing.Platform 1.7.0-s és újabb verziójával 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.