Sdílet prostřednictvím


Použití platformy Microsoft.Testing.Platform s dotnet test

Tento článek popisuje, jak pomocí dotnet test spouštět testy při použití Microsoft.Testing.Platform, a různé možnosti, které jsou k dispozici ke konfiguraci výstupu MSBuild při spouštění testů prostřednictvím Microsoft.Testing.Platform.

Tento článek ukazuje, jak pomocí dotnet test spustit všechny testy v řešení (*.sln), které používají Microsoft.Testing.Platform.

integrace dotnet test

Příkaz dotnet test představuje způsob, jak spouštět testy z řešení, projektů nebo již sestavených sestavení. Microsoft.Testing.Platform připojí k této infrastruktuře jednotný způsob spouštění testů, zejména při migraci z VSTest na Microsoft.Testing.Platform.

Integrace dotnet test – režim VSTest

Microsoft.Testing.Platform poskytuje kompatibilní vrstvu ( most VSTest), která umožňuje bezproblémovou práci s dotnet test.

Testy je možné spustit spuštěním příkazu:

dotnet test

Tato vrstva spouští test prostřednictvím nástroje VSTest a integruje se s ní na úrovni adaptéru VSTest Test Framework.

dotnet test – Režim Microsoft.Testing.Platform

Ve výchozím nastavení dotnet test ke spouštění testů používá chování VSTest. Podporu Microsoft.Testing.Platform můžete povolit v dotnet test zadáním nastavení <TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport> v souboru projektu.

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>net8.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>

    <IsPackable>false</IsPackable>
    <IsTestProject>true</IsTestProject>

    <OutputType>Exe</OutputType>
    <EnableMSTestRunner>true</EnableMSTestRunner>

    <!-- Add this to your project file. -->
    <TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport>

  </PropertyGroup>

  <!-- ... -->

</Project>

Poznámka

Důrazně doporučujeme nastavit vlastnost TestingPlatformDotnetTestSupport v Directory.Build.props. Tímto způsobem nemusíte přidávat tuto vlastnost do každého souboru testovacího projektu a neriskujete zavedení nového projektu, který ji nenastaví. Nakonec byste totiž mohli mít řešení, ve kterém jsou některé projekty VSTest, zatímco jiné používají Microsoft.Testing.Platform. To může způsobit, že nebude fungovat správně, což je nepodporovaný scénář.

Důležitý

Přestože je TestingPlatformDotnetTestSupport nastavená na true, většina možností příkazového řádku definovaných v dotnet test zůstávají orientované na VSTest a nemají vliv na testy založené na Microsoft.Testing.Platform. Chcete-li zadat argumenty do Microsoft.Testing.Platform, je nutné použít jednu z metod popsaných v dokumentaci Microsoft.Testing.Platform pro argumenty příkazového řádku s dotnet test.

Následující seznam popisuje všechny možnosti příkazového řádku dotnet test podporované Microsoft.Testing.Platform:

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

Tyto argumenty jsou podporované, protože jsou propojené s krokem sestavení a jsou nezávislé na použité testovací platformě.

Microsoft.Testing.Platform argumenty příkazového řádku s dotnet test

Argumenty, které se používají k volání testovací aplikace, můžete zadat jedním z následujících způsobů:

  • Počínaje verzí Microsoft.Testing.Platform 1.4 (součástí MSTest verze 3.6), můžete na příkazovém řádku přidat možnosti za dvojitou pomlčku --:

    dotnet test -- --minimum-expected-tests 10
    
  • Pomocí vlastnosti TestingPlatformCommandLineArguments MSBuild na příkazovém řádku:

    dotnet test -p:TestingPlatformCommandLineArguments="--minimum-expected-tests 10"
    

    Nebo v souboru projektu:

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

Další možnosti nástroje MSBuild

Integrace nástroje MSBuild poskytuje možnosti, které lze zadat v souboru projektu nebo prostřednictvím globálních vlastností na příkazovém řádku, například -p:TestingPlatformShowTestsFailure=true.

K dispozici jsou tyto možnosti:

Zobrazit selhání pro test

Ve výchozím nastavení se selhání testů shrnují do souboru .log a do nástroje MSBuild se hlásí jedno selhání na jeden testovací projekt.

Pokud chcete zobrazit chyby na neúspěšný test, zadejte na příkazovém řádku -p:TestingPlatformShowTestsFailure=true nebo do souboru projektu přidejte vlastnost <TestingPlatformShowTestsFailure>true</TestingPlatformShowTestsFailure>.

Na příkazovém řádku:

dotnet test -p:TestingPlatformShowTestsFailure=true

Nebo v souboru projektu:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>net8.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>

    <IsPackable>false</IsPackable>
    <IsTestProject>true</IsTestProject>

    <OutputType>Exe</OutputType>
    <EnableMSTestRunner>true</EnableMSTestRunner>

    <TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport>

    <!-- Add this to your project file. -->
    <TestingPlatformShowTestsFailure>true</TestingPlatformShowTestsFailure>

  </PropertyGroup>

  <!-- ... -->

</Project>

Zobrazit úplný výstup platformy

Ve výchozím nastavení se veškerý výstup konzoly, který zapisuje podkladový testovací spustitelný soubor, zachytí a skryje uživateli. To zahrnuje banner, informace o verzi a formátované testovací informace.

Chcete-li zobrazit tyto informace společně s výstupem nástroje MSBuild, použijte <TestingPlatformCaptureOutput>false</TestingPlatformCaptureOutput>.

Tato možnost nemá vliv na to, jak testovací architektura zachycuje výstup uživatele napsaný Console.WriteLine nebo jinými podobnými způsoby zápisu do konzoly.

Na příkazovém řádku:

dotnet test -p:TestingPlatformCaptureOutput=false

Nebo v souboru projektu:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>net8.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>

    <IsPackable>false</IsPackable>
    <IsTestProject>true</IsTestProject>

    <OutputType>Exe</OutputType>
    <EnableMSTestRunner>true</EnableMSTestRunner>

    <TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport>

    <!-- Add this to your project file. -->
    <TestingPlatformCaptureOutput>false</TestingPlatformCaptureOutput>

  </PropertyGroup>

  <!-- ... -->

</Project>

Důležitý

Všechny výše uvedené příklady přidávají do souboru csproj vlastnosti, jako jsou EnableMSTestRunner, TestingPlatformDotnetTestSupporta TestingPlatformCaptureOutput. Důrazně však doporučujeme nastavit tyto vlastnosti v Directory.Build.props. Tímto způsobem ho nemusíte přidávat do každého souboru testovacího projektu a nemusíte riskovat zavedení nového projektu, který nenastavuje tyto vlastnosti a končí řešením, ve kterém jsou některé projekty VSTest, zatímco jiné jsou Microsoft.Testing.Platform, které nemusí správně fungovat a není podporovaný scénář.