Delen via


Microsoft.Testing.Platform gebruiken met dotnet test

In dit artikel wordt beschreven hoe u tests uitvoert wanneer u tests gebruikt dotnet testMicrosoft.Testing.Platformen de verschillende opties die beschikbaar zijn om de MSBuild-uitvoer te configureren die wordt geproduceerd bij het uitvoeren van tests via Microsoft.Testing.Platform.

In dit artikel wordt beschreven hoe dotnet test u alle tests uitvoert in een oplossing (*.sln) die gebruikmaakt van Microsoft.Testing.Platform.

dotnet test integratie

De dotnet-testopdracht is een manier om tests uit te voeren vanuit oplossingen, projecten of reeds gebouwde assembly's. Microsoft.Testing.Platform koppelt zich aan deze infrastructuur om een uniforme manier te bieden om tests uit te voeren, met name wanneer u migreert van VSTest naar Microsoft.Testing.Platform.

dotnet test integratie - VSTest-modus

Microsoft.Testing.Platform biedt een compatibiliteitslaag (VSTest Bridge) waarmee u naadloos kunt dotnet test werken.

Tests kunnen worden uitgevoerd door het volgende uit te voeren:

dotnet test

Deze laag voert een test uit via VSTest en kan ermee worden geïntegreerd op VSTest Test Framework Adapter-niveau.

dotnet test - Microsoft.Testing.Platform-modus

VSTest wordt standaard gebruikt om tests uit te voeren Microsoft.Testing.Platform . U kunt een volledige Microsoft.Testing.Platform optie inschakelen door de <TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport> instelling in het projectbestand op te geven. Met deze instelling wordt VSTest uitgeschakeld en worden dankzij de transitieve afhankelijkheid van het NuGet-pakket Microsoft.Testing.Platform.MSBuild direct alle Microsoft.Testing.Platform geautoriseerde testprojecten in uw oplossing uitgevoerd. Het werkt naadloos als u een direct Microsoft.Testing.Platform testproject doorgeeft.

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

In deze modus kunt u extra parameters opgeven die worden gebruikt om de testtoepassing op een van de volgende manieren aan te roepen:

  • Microsoft.Testing.Platform Vanaf versie 1.4 (opgenomen in MSTest versie 3.6) kunt u opties toevoegen na het dubbele streepje -- op de opdrachtregel:

    dotnet test -- --minimum-expected-tests 10
    
  • Door de TestingPlatformCommandLineArguments eigenschap MSBuild op de opdrachtregel te gebruiken:

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

    Of in het projectbestand:

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

Aanvullende MSBuild-opties

De MSBuild-integratie biedt opties die kunnen worden opgegeven in het projectbestand of via globale eigenschappen op de opdrachtregel, zoals -p:TestingPlatformShowTestsFailure=true.

Dit zijn de beschikbare opties:

Fout per test weergeven

Standaard worden testfouten samengevat in een .log-bestand en wordt één fout per testproject gerapporteerd aan MSBuild.

Als u fouten per mislukte test wilt weergeven, geeft u -p:TestingPlatformShowTestsFailure=true op de opdrachtregel op of voegt u de <TestingPlatformShowTestsFailure>true</TestingPlatformShowTestsFailure> eigenschap toe aan het projectbestand.

Op de opdrachtregel:

dotnet test -p:TestingPlatformShowTestsFailure=true

Of in projectbestand:

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

Volledige platformuitvoer weergeven

Standaard worden alle console-uitvoer die door de onderliggende uitvoerbare schrijfbewerkingen voor de test wordt vastgelegd en verborgen voor de gebruiker. Dit omvat de banner, versie-informatie en opgemaakte testgegevens.

Gebruik <TestingPlatformCaptureOutput>false</TestingPlatformCaptureOutput>om deze informatie samen met MSBuild-uitvoer weer te geven.

Deze optie heeft geen invloed op de manier waarop het testframework gebruikersuitvoer vastlegt die is geschreven door Console.WriteLine of andere vergelijkbare manieren om naar de console te schrijven.

Op de opdrachtregel:

dotnet test -p:TestingPlatformCaptureOutput=false

Of in projectbestand:

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

Belangrijk

Alle bovenstaande voorbeelden voegen eigenschappen toe, zoals EnableMSTestRunner, TestingPlatformDotnetTestSupporten TestingPlatformCaptureOutput in het csproj-bestand. Het wordt echter ten zeerste aanbevolen deze eigenschappen in te stellen in Directory.Build.props. Op die manier hoeft u het niet toe te voegen aan elk testprojectbestand en loopt u geen risico dat u een nieuw project introduceert dat deze eigenschappen niet instelt en uiteindelijk een oplossing krijgt waarbij sommige projecten VSTest zijn, terwijl andere Microsoft.Testing.Platform zijn, wat mogelijk niet correct werkt en niet wordt ondersteund.