Sdílet prostřednictvím


Migrace z VSTest na Microsoft.Testing.Platform

V tomto článku se dozvíte, jak migrovat z VSTest na Microsoft.Testing.Platform.

Výslovný souhlas s používáním platformy Microsoft.Testing.Platform

Prvním krokem v migraci je vyjádření souhlasu s používáním platformy Microsoft.Testing.Platform.

Pro všechny testovací architektury přidejte <OutputType>Exe</OutputType> do všech testovacích projektů v řešení. Potom postupujte podle pokynů specifických pro danou architekturu.

MSTest

Microsoft.Testing.Platform podporuje MSTest od verze 3.2.0. Doporučujeme ale aktualizovat na nejnovější dostupnou verzi MSTest.

Pokud se chcete přihlásit, přidejte <EnableMSTestRunner>true</EnableMSTestRunner> pod PropertyGroup v souboru Directory.Build.props.

Poznámka:

Pokud používáte MSTest.Sdk, microsoft.Testing.Platform se ve výchozím nastavení používá, pokud <UseVSTest>true</UseVSTest> není zadán.

NUnit

Microsoft.Testing.Platform podporuje NUnit3TestAdapter od verze 5.0.0.

Chcete-li vyjádřit souhlas, přidejte <EnableNUnitRunner>true</EnableNUnitRunner> pod PropertyGroup v souboru Directory.Build.props.

xUnit.net

Microsoft.Testing.Platform se podporuje od xunit.v3.

Pokud chcete vyjádřit výslovný souhlas, přidejte <UseMicrosoftTestingPlatformRunner>true</UseMicrosoftTestingPlatformRunner> pod PropertyGroup do Directory.Build.props souboru.

dotnet test

Registrace pro .NET 9 SDK a starší verze

V .NET 9 SDK a starších verzích neexistuje žádná nativní podpora pro Microsoft.Testing.Platform pro dotnet test. Podpora je založená na infrastruktuře VSTest. Pokud ho chcete použít, přidejte <TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport> pod PropertyGroup v souboru Directory.Build.props.

Důležité

Při spuštění podpory Microsoft.Testing.Platform v tomto režimu je nutné přidat -- na oddělení dotnet test argumentů od nových argumentů platformy. Například: dotnet test --no-build -- --list-tests.

Výslovný souhlas pro sadu .NET 10 SDK a novější

Počínaje sadou .NET 10 SDK existuje nativní podpora pro Microsoft.Testing.Platform. Pokud ho chcete použít, musíte určit spouštěč testů jako Microsoft.Testing.Platform v global.json:

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

Důležité

V tomto režimu se již nadbytečné -- nepoužívá.

Aktualizujte dotnet test vyvolání

Možnosti příkazového dotnet test řádku jsou rozdělené do dvou kategorií: argumenty související s sestavením a testovací argumenty.

Argumenty související s sestavením nejsou pro testovací platformu relevantní a proto není nutné je aktualizovat pro novou platformu. Zde jsou uvedené argumenty související se sestavením:

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

Argumenty související s testováním jsou specifické pro VSTest, takže je potřeba je transformovat tak, aby odpovídaly nové platformě. Následující tabulka ukazuje mapování mezi argumenty VSTest a novou platformou:

Argument VSTest Nový argument platformy
--test-adapter-path <ADAPTER_PATH> Není relevantní pro Microsoft.Testing.Platform
--blame Není relevantní pro Microsoft.Testing.Platform
--blame-crash --crashdump (vyžaduje rozšíření výpisu stavu systému)
--blame-crash-dump-type <DUMP_TYPE> --crashdump-type (vyžaduje rozšíření výpisu stavu systému)
--blame-crash-collect-always Není podporováno
--blame-hang --hangdump (vyžaduje rozšíření "Hang Dump")
--blame-hang-dump-type <DUMP_TYPE> --hangdump-type (vyžaduje rozšíření pro hang dump)
--blame-hang-timeout <TIMESPAN> --hangdump-timeout (vyžaduje rozšíření Hang Dump)
--collect <DATA_COLLECTOR_NAME> Závisí na sběrači dat.
-d\|--diag <LOG_FILE> --diagnostic
--filter <EXPRESSION> Závisí na vybrané testovací rozhraní.
-l\|--logger <LOGGER> Závisí na protokolovacím nástroji.
--results-directory <RESULTS_DIR> --results-directory <RESULTS_DIR>
-s\|--settings <SETTINGS_FILE> Závisí na vybrané testovací rozhraní.
-t\|--list-tests --list-tests
-- <RunSettings arguments> --test-parameter (poskytuje VSTestBridge)

--collect

--collect je obecný bod rozšiřitelnosti v nástroji VSTest pro všechny kolektory dat. Model rozšiřitelnosti platformy Microsoft.Testing.Platform se liší a neexistuje žádný takový centralizovaný argument, který by bylo možné používat ve všech kolekcích dat. S microsoft.Testing.Platform může každý kolektor dat přidat vlastní možnost příkazového řádku. Spuštění Microsoft CodeCoverage prostřednictvím VSTest může být například podobné následujícímu:

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

S microsoft.Testing.Platform se stane toto:

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

Důležité

Jak bylo vysvětleno dříve, při použití Microsoft.Testing.Platform se systémem dotnet testVSTest je potřeba navíc -- před argumenty určenými k předání platformě. Takže se to změní dotnet test -- --coverage --coverage-output-format cobertura.

--filter

--filter je filtr založený na VSTest.

MSTest a NUnit podporují stejný formát filtru i při spuštění s platformou Microsoft.Testing.Platform.

xUnit.net nepodporuje stejný formát filtru při spuštění s platformou Microsoft.Testing.Platform. Je nutné provést migraci z filtru založeného na VSTest na novou podporu filtru v xunit.v3, která je k dispozici pomocí následujících možností příkazového řádku.

xUnit.net konkrétní možnosti:

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

Další informace najdete v dokumentaci k platformě Microsoft.Testing.Platform pro xUnit.net a dotazovací jazyk pro xUnit.net.

--logger

To, co se obvykle v nástroji VSTest označuje jako logger, se v Microsoft.Testing.Platform označuje jako reportér. V microsoft.Testing.Platform je protokolování explicitně určené jenom pro účely diagnostiky.

Podobně jako --collect a --logger je obecný bod rozšiřitelnosti ve VSTest pro jakéhokoli loggera (nebo v kontextu Microsoft.Testing.Platform, jakéhokoli reportera). Každý reportér Microsoft.Testing.Platform může přidat vlastní možnost příkazového řádku, a proto neexistuje žádná centralizovaná možnost příkazového řádku jako ve VSTest --logger.

Jedním z velmi běžně používaných protokolovacích nástroj VSTest je protokolovací nástroj TRX. Tento logger se obvykle používá následovně:

dotnet test --logger trx

V microsoft.Testing.Platform se příkaz stane:

dotnet test --report-trx

Důležité

Pokud chcete použít --report-trx, musíte mít Microsoft.Testing.Extensions.TrxReport nainstalovaný balíček NuGet.

Důležité

Jak bylo vysvětleno dříve, při použití Microsoft.Testing.Platform se systémem dotnet testVSTest je potřeba navíc -- před předáním argumentů určených k platformě. Takže se to změní na dotnet test -- --report-trx.

--settings

VSTest --settings se používá k určení souboru RunSettings pro testovací běh. RunSettings nepodporuje základní Microsoft.Testing.Platform a nahradil ho modernější testconfig.json konfigurační soubor. MsTest a NUnit však stále podporují staré RunSettings při spuštění Microsoft.Testing.Platform a --settings jsou stále podporovány.

vstest.console.exe

Pokud používáte vstest.console.exe přímo, doporučujeme ho nahradit příkazem dotnet test .

Průzkumník testů

Pokud používáte Visual Studio nebo Visual Studio Code Test Explorer, možná budete muset povolit podporu pro Microsoft.Testing.Platform.

Visual Studio

Visual Studio Test Explorer podporuje Microsoft.Testing.Platform od verze 17.14. Pokud používáte starší verzi, možná budete muset sadu Visual Studio aktualizovat na nejnovější verzi.

Visual Studio Code

Visual Studio Code s C# DevKit podporuje Microsoft.Testing.Platform.

Azure DevOps

Při použití úloh Azure DevOps možná budete muset aktualizovat kanál tak, aby používal Microsoft.Testing.Platform v závislosti na tom, kterou úlohu používáte.

Úloha VSTest

Pokud v Azure DevOps používáte úlohu VSTest , můžete ji nahradit úlohou .NET Core.

Úloha .NET Core CLI

  • Pokud jste do úkolu předali vlastní arguments, postupujte podle stejných pokynů pro dotnet test migraci.

  • Pokud používáte úlohu DotNetCoreCLI bez aktivního přihlášení se k nativnímu prostředí Microsoft.Testing.Platform pro sadu .NET 10 SDK a novější prostřednictvím global.json souboru, musíte úlohu arguments nastavit tak, aby správně odkazovala na adresář výsledků, na který původně odkazoval, a také na požadovanou sestavu TRX. Například:

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