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.

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.

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 adjon hozzá egy dotnet.config fájlt az adattár vagy megoldás gyökeréhez.

[dotnet.test.runner]
name = "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>