Sdílet prostřednictvím


Testování pomocí příkazu 'dotnet test'

Tento článek poskytuje přehled o příkazu dotnet test příkazového řádku, včetně jeho kompatibility v minulosti s VSTest i Microsoft.Testing.Platform (MTP).

Příkaz dotnet test funguje ve dvou primárních režimech:

  • Režim VSTest : Jedná se o výchozí režim pro dotnet test a byl jediným dostupným režimem před sadou .NET 10 SDK. Je primárně určen pro VSTest, ale může také spouštět Microsoft.Testing.Platform test prostřednictvím balíčku NuGet Microsoft.Testing.Platform.MSBuild .
  • Režim Microsoft.Testing.Platform : Zavedený se sadou .NET 10 SDK, tento režim výhradně podporuje testovací aplikace vytvořené pomocí platformy Microsoft.Testing.Platform.

Návod

Referenční informace k rozhraní příkazového řádku najdete v dotnet test.

Režim VSTestu dotnet test

VSTest byl dlouhou dobu jedinou testovací platformou v .NET. V důsledku toho dotnet test byl výhradně navržen pro VSTest se všemi možnostmi příkazového řádku přizpůsobenými VSTestu.

Proces zahrnuje vyvolání VSTest cíle MSBuild, což spustí další interní cíle a nakonec spustí vstest.console. Všechny dotnet test možnosti příkazového řádku se převádějí na jejich ekvivalenty ve vstest.console.

Spouštění projektů MTP v režimu VSTest

dotnet test byl navržen tak, aby spouštěl projekty VSTest v režimu VSTest. Projekty MTP však můžete spouštět v dotnet test režimu VSTest pomocí balíčku Microsoft.Testing.Platform.MSBuild . Z pohledu uživatele je tato podpora povolena nastavením TestingPlatformDotnetTestSupport vlastnosti MSBuild na true (je false to ve výchozím nastavení z důvodu zpětné kompatibility). Pokud je tato vlastnost nastavena na true, Microsoft.Testing.Platform.MSBuild změní VSTest cílové chování, přesměrování na volání InvokeTestingPlatform. InvokeTestingPlatform je cíl MSBuild zahrnutý v Microsoft.Testing.Platform.MSBuild, který je zodpovědný za správné spouštění testovacích aplikací MTP jako spustitelných souborů. Možnosti příkazového řádku specifické pro VSTest, například --logger, se v tomto režimu bezobslužně ignorují. Pokud chcete zahrnout argumenty specifické pro MTP, například --report-trx, musíte je připojit za další --. Například: dotnet test -- --report-trx.

Poznámka:

MSTest a NUnit používají balíček Microsoft.Testing.Extensions.VSTestBridge . Nastavením EnableMSTestRunner nebo EnableNUnitRunner (což povoluje Microsoft.Testing.Platform) bude váš testovací projekt podporovat jak VSTest, tak Microsoft.Testing.Platform. Pokud v tomto scénáři použijete režim dotnet test VSTest a nenastavíte TestingPlatformDotnetTestSupport hodnotu true, v podstatě běžíte zcela s VSTest, jako kdyby EnableMSTestRunner a EnableNUnitRunner nejsou nastaveny na true.

Poznámka:

Důrazně doporučujeme nastavit TestingPlatformDotnetTestSupport vlastnost v Directory.Build.props. Tím zajistíte, že ho nemusíte přidávat do každého testovacího souboru projektu jednotlivě. Kromě toho zabraňuje riziku zavedení nového testovacího projektu, který nenastaví tuto vlastnost, což může vést k řešení, ve kterém některé projekty používají VSTest, zatímco jiné používají Microsoft.Testing.Platform. Tato smíšená konfigurace nemusí fungovat správně a je to nepodporovaný scénář.

Následující seznam popisuje možnosti příkazového dotnet test řádku příkazu v režimu VSTest, které podporuje Microsoft.Testing.Platform. Tyto možnosti jsou specifické pro proces sestavení a nejsou předány službě VSTest, proto fungují s MTP.

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

Návod

Argumenty příkazového řádku testovací aplikace můžete přizpůsobit pomocí TestingPlatformCommandLineArguments vlastnosti MSBuild:

<PropertyGroup>
  ...
  <TestingPlatformCommandLineArguments>--minimum-expected-tests 10</TestingPlatformCommandLineArguments>
</PropertyGroup>

Další informace týkající se spouštění projektů MTP v režimu VSTest naleznete dotnet testv tématu Použití Microsoft.Testing.Platform s režimem VSTest .dotnet test

Pokročilé technické podrobnosti

V režimu dotnet test VSTest se -- používá k označení argumentů RunSettings. Původně byl dotnet test navržen tak, aby tyto argumenty předal jako vlastnost MSBuild nazvanou VSTestCLIRunSettings. Proto při spouštění testovacích aplikací MTP v režimu VSTest znovu použijeme hodnotu VSTestCLIRunSettings , která představuje "argumenty aplikace".

Kombinování VSTest a Microsoft.Testing.Platform (MTP)

Při spuštění dotnet test v režimu VSTest se doporučuje vyhnout zahrnutí VSTest i Microsoft.Testing.Platform do stejného řešení.

Tento scénář není oficiálně podporovaný a měli byste vědět o následujících situacích:

  • Možnosti příkazového řádku specifické pro VSTest budou platit pouze pro projekty VSTest, a ne pro testovací aplikace MTP.
  • Možnosti příkazového řádku specifické pro MTP zadané po -- budou považovány za argumenty RunSettings pro projekty VSTest.

Klíčové poznatky

  • Pokud chcete spouštět testovací aplikace MTP v dotnet test režimu VSTest, měli byste použít Microsoft.Testing.Platform.MSBuild, předat možnosti příkazového řádku specifické pro MTP za extra --a nastavit TestingPlatformDotnetTestSupport na true.
  • Možnosti příkazového řádku orientované na VSTest jsou bezobslužně ignorovány.

Kvůli těmto problémům platforma .NET zavedla nový dotnet test režim určený speciálně pro MTP. Doporučujeme uživatelům MTP přejít z režimu VSTest dotnet test do nového režimu pomocí sady .NET 10 SDK.

Režim platformy Microsoft.Testing.Platform (MTP) dotnet test

Aby se vyřešily problémy, ke kterým došlo při spuštění dotnet test STP v režimu VSTest, platforma .NET zavedla v sadě .NET 10 SDK nový režim, který je speciálně navržený pro MTP.

Pokud chcete tento režim povolit, přidejte dotnet.config soubor do kořenového adresáře úložiště nebo řešení.

[dotnet.test.runner]
name = "Microsoft.Testing.Platform"

Důležité

Prostředí dotnet test pro MTP je podporováno pouze ve Microsoft.Testing.Platform verzi 1.7 a novější.

Vzhledem k tomu, že tento režim je speciálně navržený pro Microsoft.Testing.Platform, TestingPlatformDotnetTestSupport ani další -- nejsou vyžadovány.

Důležité

Tento režim je kompatibilní pouze s Microsoft.Testing.Platform verze 1.7.0 a novější.

Důležité

Pokud váš testovací projekt podporuje VSTest, ale nepodporuje MTP, vygeneruje se chyba.

Návod

Argumenty příkazového řádku testovací aplikace můžete přizpůsobit pomocí TestingPlatformCommandLineArguments vlastnosti MSBuild:

<PropertyGroup>
  ...
  <TestingPlatformCommandLineArguments>--minimum-expected-tests 10</TestingPlatformCommandLineArguments>
</PropertyGroup>