Dela via


Använd Microsoft.Testing.Platform med dotnet test

Den här artikeln beskriver hur du använder dotnet test för att köra tester när du använder Microsoft.Testing.Platformoch de olika alternativ som är tillgängliga för att konfigurera MSBuild-utdata som genereras när du kör tester via Microsoft.Testing.Platform.

Den här artikeln visar hur du använder dotnet test för att köra alla tester i en lösning (*.sln) som använder Microsoft.Testing.Platform.

dotnet test integrering

Kommandot dotnet test är ett sätt att köra tester från lösningar, projekt eller redan skapade sammansättningar. Microsoft.Testing.Platform ansluter till den här infrastrukturen för att ge ett enhetligt sätt att köra tester, särskilt när du migrerar från VSTest till Microsoft.Testing.Platform.

dotnet test integrering – VSTest-läge

Microsoft.Testing.Platform tillhandahåller ett -kompatibilitetslager (VSTest Bridge) för att arbeta sömlöst med dotnet test.

Tester kan köras genom att köra:

dotnet test

Det här lagret kör test via VSTest och integreras med det på VSTest Test Framework-adapternivå.

dotnet test – Microsoft.Testing.Platform-läge

Som standard använder dotnet test VSTest-beteende för att köra tester. Du kan aktivera stöd för Microsoft.Testing.Platform i dotnet test genom att ange inställningen <TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport> i projektfilen.

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

Notera

Vi rekommenderar starkt att du anger egenskapen TestingPlatformDotnetTestSupport i Directory.Build.props. På så sätt behöver du inte lägga till den i varje testprojektfil och du riskerar inte att introducera ett nytt projekt som inte anger den här egenskapen och som får en lösning där vissa projekt är VSTest medan andra är Microsoft.Testing.Platform, som kanske inte fungerar korrekt och inte stöds.

Viktig

Trots att TestingPlatformDotnetTestSupport anges till true, förblir de flesta kommandoradsalternativen som definieras i dotnet test fortfarande orienterade mot VSTest och påverkar inte Microsoft.Testing.Platform-baserade tester. Om du vill ange argument för Microsoft.Testing.Platformmåste du använda någon av metoderna som beskrivs i Microsoft.Testing.Platform kommandoradsargument med dotnet test.

I listan nedan beskrivs alla dotnet test kommandoradsalternativ som stöds av 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>

Dessa argument stöds eftersom de är länkade till byggsteget och är oberoende av den testplattform som används.

Microsoft.Testing.Platform kommandoradsargument med dotnet test

Du kan ange argument som används för att anropa testprogrammet på något av följande sätt:

  • Från och med Microsoft.Testing.Platform version 1.4 (ingår i MSTest version 3.6) kan du lägga till alternativ efter det dubbla strecket -- på kommandoraden:

    dotnet test -- --minimum-expected-tests 10
    
  • Med hjälp av egenskapen TestingPlatformCommandLineArguments MSBuild på kommandoraden:

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

    Eller i projektfilen:

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

Ytterligare MSBuild-alternativ

MSBuild-integreringen innehåller alternativ som kan anges i projektfilen eller via globala egenskaper på kommandoraden, till exempel -p:TestingPlatformShowTestsFailure=true.

Det här är de tillgängliga alternativen:

Visa fel per test

Som standard sammanfattas testfel i en .log fil och ett enskilt fel per testprojekt rapporteras till MSBuild.

Om du vill visa fel per misslyckat test anger du -p:TestingPlatformShowTestsFailure=true på kommandoraden eller lägger till egenskapen <TestingPlatformShowTestsFailure>true</TestingPlatformShowTestsFailure> i projektfilen.

På kommandoraden:

dotnet test -p:TestingPlatformShowTestsFailure=true

Eller i projektfilen:

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

Visa fullständiga plattformsutdata

Som standardinställning samlas alla konsolutdata som det underliggande körbara testprogrammet skriver in och göms för användaren. Detta inkluderar banderoll, versionsinformation och formaterad testinformation.

Om du vill visa den här informationen tillsammans med MSBuild-utdata använder du <TestingPlatformCaptureOutput>false</TestingPlatformCaptureOutput>.

Det här alternativet påverkar inte hur testramverket samlar in användarutdata som skrivits av Console.WriteLine eller andra liknande sätt att skriva till konsolen.

På kommandoraden:

dotnet test -p:TestingPlatformCaptureOutput=false

Eller i projektfilen:

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

Viktig

Alla exempel ovan lägger till egenskaper som EnableMSTestRunner, TestingPlatformDotnetTestSupportoch TestingPlatformCaptureOutput i csproj-filen. Vi rekommenderar dock starkt att du anger dessa egenskaper i Directory.Build.props. På så sätt behöver du inte lägga till den i varje testprojektfil, och du riskerar inte att introducera ett nytt projekt som inte anger dessa egenskaper och får en lösning där vissa projekt är VSTest medan andra är Microsoft.Testing.Platform, som kanske inte fungerar korrekt och inte stöds.