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


Migrálás a VSTestről a Microsoft.Testing.Platform platformra

Ebből a cikkből megtudhatja, hogyan migrálhat a VSTestről a Microsoft.Testing.Platform platformra.

Bejelentkezés a Microsoft.Testing.Platform használatára

A migrálás első lépése a Microsoft.Testing.Platform használata.

Az összes tesztelési keretrendszerhez adjon hozzá <OutputType>Exe</OutputType> a megoldás összes tesztprojektjéhez. Ezt követően kövesse a keretrendszerre vonatkozó útmutatást.

MSTest

A Microsoft.Testing.Platformot az MSTest a 3.2.0-stól kezdve támogatja. Javasoljuk azonban, hogy frissítsen a legújabb elérhető MSTest-verzióra.

A beleegyezéshez adja hozzá <EnableMSTestRunner>true</EnableMSTestRunner> a PropertyGroup elem alá a Directory.Build.props fájlban.

Megjegyzés:

Az MSTest.Sdk használatakor alapértelmezés szerint a Microsoft.Testing.Platformot használja a rendszer, hacsak nincs <UseVSTest>true</UseVSTest> megadva.

NUnit

A Microsoft.Testing.Platformot az NUnit3TestAdapter támogatja az 5.0.0-s verziótól kezdve.

A bejelentkezéshez adja hozzá <EnableNUnitRunner>true</EnableNUnitRunner> egy PropertyGroup fájlban Directory.Build.props .

xUnit.net

A Microsoft.Testing.Platform az xunit.v3 verziótól kezdve támogatott.

Az előfizetéshez adja hozzá a <UseMicrosoftTestingPlatformRunner>true</UseMicrosoftTestingPlatformRunner> elemet egy PropertyGroup fájlban a Directory.Build.props alatt.

dotnet test

A .NET 9 SDK és korábbi verziókra való bejelentkezés

A .NET 9 SDK-ban és a korábbi verziókban nincs natív támogatás a Microsoft.Testing.Platform for dotnet test. A támogatás a VSTest-infrastruktúrára épül. Ehhez adja hozzá <TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport> a PropertyGroup alá a Directory.Build.props fájlban.

Fontos

Ha ebben a módban futtatja a Microsoft.Testing.Platform támogatást, hozzá kell adnia -- az argumentumokat az dotnet test új platformargumentumoktól való elválasztásához. Például: dotnet test --no-build -- --list-tests.

A .NET 10 SDK és újabb verziókra való bejelentkezés

A .NET 10 SDK-tól kezdve natív támogatást nyújt a Microsoft.Testing.Platform. A használatához meg kell adnia a tesztfuttatót Microsoft.Testing.Platform a global.json:

{
  "test": {
    "runner": "Microsoft.Testing.Platform"
  }
}

Fontos

Ebben a módban az extra -- már nem használatos.

Frissítse a dotnet test hívásokat

A parancssori dotnet test lehetőségek két kategóriába sorolhatók: a buildel kapcsolatos argumentumokra és a teszteléssel kapcsolatosakra.

A buildel kapcsolatos argumentumok a tesztplatform szempontjából irrelevánsak, ezért nem kell frissíteni az új platformot. A buildel kapcsolatos paraméterek a következők:

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

A teszthez kapcsolódó argumentumok VSTest-specifikusak, ezért az új platformnak megfelelően kell átalakítani. Az alábbi táblázat a VSTest argumentumok és az új platform közötti megfeleltetést mutatja be:

VSTest argumentum Új platformargumentum
--test-adapter-path <ADAPTER_PATH> Nem releváns a Microsoft.Testing.Platform esetében
--blame Nem releváns a Microsoft.Testing.Platform esetében
--blame-crash --crashdump ( összeomlási memóriakép bővítményt igényel)
--blame-crash-dump-type <DUMP_TYPE> --crashdump-type ( összeomlási memóriakép bővítményt igényel)
--blame-crash-collect-always Nem támogatott
--blame-hang --hangdump ( rendszer dump bővítményt igényel)
--blame-hang-dump-type <DUMP_TYPE> --hangdump-type ( Hang dump bővítmény szükséges)
--blame-hang-timeout <TIMESPAN> --hangdump-timeout (Hang dump bővítményt igényel)
--collect <DATA_COLLECTOR_NAME> Az adatgyűjtőtől függ
-d\|--diag <LOG_FILE> --diagnostic
--filter <EXPRESSION> A kiválasztott tesztelési keretrendszertől függ
-l\|--logger <LOGGER> A naplózótól függ
--results-directory <RESULTS_DIR> --results-directory <RESULTS_DIR>
-s\|--settings <SETTINGS_FILE> A kiválasztott tesztelési keretrendszertől függ
-t\|--list-tests --list-tests
-- <RunSettings arguments> --test-parameter (előállítva a VSTestBridge által)

--collect

--collect egy általános bővíthetőségi pont a VSTestben minden adatgyűjtő esetében. A Microsoft.Testing.Platform bővíthetőségi modellje eltérő, és nincs olyan központosított argumentum, amelyet minden adatgyűjtő használ. A Microsoft.Testing.Platform használatával minden adatgyűjtő saját parancssori lehetőséget adhat hozzá. A Microsoft CodeCoverage VSTesten keresztüli futtatása például a következőhöz hasonló lehet:

dotnet test --collect "Code Coverage;Format=cobertura"

A Microsoft.Testing.Platform esetében a következő történik:

dotnet test --coverage --coverage-output-format cobertura

Fontos

Ahogy korábban már elmagyaráztuk, a Microsoft.Testing.Platform VSTest-alapú dotnet testhasználata esetén a platformnak átadni kívánt argumentumok előtt továbbiakra -- van szükség. Tehát ez lesz dotnet test -- --coverage --coverage-output-format cobertura.

--filter

--filter A VSTest-alapú szűrő.

Az MSTest és az NUnit ugyanazt a szűrőformátumot támogatja akkor is, ha a Microsoft.Testing.Platform használatával fut.

xUnit.net nem támogatja ugyanazt a szűrőformátumot a Microsoft.Testing.Platform használatakor. A VSTest-alapú szűrőről át kell telepítenie az xunit.v3 új szűrőtámogatására, amely a következő parancssori beállítások használatával érhető el.

xUnit.net konkrét beállítások:

  • --filter-class
  • --filter-not-class
  • --filter-method
  • --filter-not-method
  • --filter-namespace
  • --filter-not-namespace
  • --filter-trait
  • --filter-not-trait
  • --filter-query

További információkért tekintse meg a Microsoft.Testing.Platform dokumentációját az xUnit.net számára és a lekérdezésszűrő nyelvének dokumentációját az xUnit.net számára.

--logger

A VSTestben általában "logger"-nek nevezett kifejezést a Microsoft.Testing.Platform "riporterének" nevezik. A Microsoft.Testing.Platformban a naplózás kifejezetten csak diagnosztizálás céljából történik.

Hasonlóan a --collect és --logger-hoz/-hez, a VSTest egy általános kiterjesztési pont minden naplózó (vagy a Microsoft.Testing.Platform kontextusában bármely riporter) számára. Minden Microsoft.Testing.Platform-riporter saját parancssori lehetőséget adhat hozzá, és így nincs olyan központi parancssori lehetőség, mint a VSTest --logger.

Az egyik leggyakrabban használt VSTest-naplózó a TRX-naplózó. Ezt a naplózót általában a következőképpen hívjuk:

dotnet test --logger trx

A Microsoft.Testing.Platform használatával a parancs a következő lesz:

dotnet test --report-trx

Fontos

A használatához --report-trxtelepítve kell lennie a Microsoft.Testing.Extensions.TrxReport NuGet-csomagnak.

Fontos

Ahogy korábban már elmagyaráztuk, a Microsoft.Testing.Platform VSTest-alapú dotnet testhasználata esetén a platformnak átadni kívánt argumentumok előtt továbbiakra -- van szükség. Tehát ez lesz dotnet test -- --report-trx.

--settings

A VSTest egy --settings RunSettings-fájl megadására szolgál a tesztfuttatáshoz. A RunSettings-t nem támogatja az alapvető Microsoft.Testing.Platform, és egy modernebb testconfig.json konfigurációs fájl váltotta fel. Az MSTest és az NUnit azonban továbbra is támogatja a régi RunSettings szolgáltatást a Microsoft.Testing.Platform futtatásakor, és --settings továbbra is támogatott.

vstest.console.exe

Ha közvetlenül használja vstest.console.exe , javasoljuk, hogy cserélje le a dotnet test parancsra.

Tesztböngésző

A Visual Studio vagy a Visual Studio Code Test Explorer használatakor előfordulhat, hogy engedélyeznie kell a Microsoft.Testing.Platform támogatását.

Visual Studio

A Visual Studio Test Explorer a Microsoft.Testing.Platformot a 17.14-es verziótól kezdve támogatja. Ha egy korábbi verziót használ, előfordulhat, hogy frissítenie kell a Visual Studiót a legújabb verzióra.

Visual Studio Code

A Visual Studio Code és a C# DevKit támogatja a Microsoft.Testing.Platformot.

Azure DevOps

Az Azure DevOps-feladatok használatakor előfordulhat, hogy frissítenie kell a folyamatot a Microsoft.Testing.Platform használatára, attól függően, hogy melyik feladatot használja.

VSTest-feladat

Ha a VSTest-feladatot az Azure DevOpsban használja, lecserélheti a .NET Core-feladatra.

.NET Core CLI-feladat

  • Ha egyéni arguments került a feladathoz, kövesse a dotnet test áttelepítésére vonatkozó útmutatót.

  • Ha a DotNetCoreCLI-feladatot anélkül használja, hogy a .NET 10 SDK-hoz és újabb verziókhoz tartozó natív Microsoft.Testing.Platform-élményt választja fájlon keresztül global.json , úgy kell beállítania a feladatot arguments , hogy helyesen mutasson a hivatkozott eredménykönyvtárra, valamint a kért TRX-jelentésre. Például:

    - task: DotNetCoreCLI@2
      displayName: Run unit tests
      inputs:
        command: 'test'
        arguments: '-- --report-trx --results-directory $(Agent.TempDirectory)