Dela via


Testa med "dotnet-test"

Den här artikeln ger insikter om dotnet test CLI-kommandot, inklusive dess historikkompatibilitet med både VSTest och Microsoft.Testing.Platform (MTP).

Kommandot dotnet test körs i två primära lägen:

  • VSTest-läge : Detta är standardläget för dotnet test och var det enda tillgängliga läget före .NET 10 SDK. Det är främst utformat för VSTest men kan också köra Microsoft.Testing.Platform-test via Microsoft.Testing.Platform.MSBuild NuGet-paketet.
  • Microsoft.Testing.Platform-läge : Med .NET 10 SDK har det här läget exklusivt stöd för testprogram som skapats med Microsoft.Testing.Platform.

Tips/Råd

För CLI-referens, se dotnet-test.

VSTest-läge för dotnet test

UNDER lång tid var VSTest den enda testplattformen i .NET. Därför dotnet test utformades exklusivt för VSTest, med alla kommandoradsalternativ skräddarsydda för VSTest.

Processen innebär att VSTest anropa MSBuild-målet, vilket utlöser andra interna mål att köra och slutligen kör vstest.console. Alla dotnet test kommandoradsalternativ översätts till deras motsvarigheter i vstest.console.

Köra MTP-projekt med VSTest-läge

dotnet test har utformats för att köra VSTest-projekt i VSTest-läge. Du kan dock köra MTP-projekt i dotnet test VSTest-läge med hjälp av paketet Microsoft.Testing.Platform.MSBuild . Från användarens perspektiv aktiveras det här stödet genom att ange TestingPlatformDotnetTestSupport egenskapen MSBuild till true (det är false som standard av bakåtkompatibilitetsskäl). När den här egenskapen är inställd på trueändrar VSTest Microsoft.Testing.Platform.MSBuild målbeteendet och omdirigerar den till anropet InvokeTestingPlatform. InvokeTestingPlatform är ett MSBuild-mål som ingår i Microsoft.Testing.Platform.MSBuild som ansvarar för korrekt körning av MTP-testprogram som körbara filer. VSTest-specifika kommandoradsalternativ, till exempel --logger, ignoreras tyst i det här läget. Om du vill inkludera MTP-specifika argument, till exempel --report-trx, måste du lägga till dem efter ytterligare --. Till exempel dotnet test -- --report-trx.

Anmärkning

MSTest och NUnit använder paketet Microsoft.Testing.Extensions.VSTestBridge . Genom att ange EnableMSTestRunner eller EnableNUnitRunner (som aktiverar Microsoft.Testing.Platform) stöder testprojektet både VSTest och Microsoft.Testing.Platform. I det scenariot, om du använder VSTest-läget dotnet test och inte ställer in TestingPlatformDotnetTestSupport som sant, använder du i princip helt VSTest, som om EnableMSTestRunner och EnableNUnitRunner inte var inställda på sant.

Anmärkning

Vi rekommenderar starkt att du anger egenskapen TestingPlatformDotnetTestSupport i Directory.Build.props. Detta säkerställer att du inte behöver lägga till den i varje testprojektfil individuellt. Dessutom förhindrar det risken för att introducera ett nytt testprojekt som inte anger den här egenskapen, vilket kan resultera i en lösning där vissa projekt använder VSTest medan andra använder Microsoft.Testing.Platform. Den här blandade konfigurationen kanske inte fungerar korrekt och är ett scenario som inte stöds.

I följande lista beskrivs kommandoradsalternativen dotnet test för kommandot i VSTest-läge som stöds av Microsoft.Testing.Platform. Dessa alternativ är specifika för byggprocessen och skickas inte till VSTest, vilket är anledningen till att de fungerar med 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>

Tips/Råd

Du kan anpassa kommandoradsargumenten för testprogrammet via TestingPlatformCommandLineArguments egenskapen MSBuild:

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

Mer information om hur du kör MTP-projekt i VSTest-läge i dotnet testfinns i Använda Microsoft.Testing.Platform med VSTest-läge för dotnet test.

Avancerad teknisk information

I dotnet test VSTest-läge -- används för att ange RunSettings-argumenten. dotnet test Ursprungligen utformades för att skicka dessa argument som en MSBuild-egenskap med namnet VSTestCLIRunSettings. När vi kör MTP-testprogram i VSTest-läge återanvänder vi därför värdet VSTestCLIRunSettings för för att representera "programargumenten".

Blanda VSTest och Microsoft.Testing.Platform (MTP)

När du kör dotnet test i VSTest-läge rekommenderar vi att du undviker att inkludera både VSTest och Microsoft.Testing.Platform i samma lösning.

Det här scenariot stöds inte officiellt och du bör vara medveten om följande:

  • VSTest-specifika kommandoradsalternativ gäller endast för VSTest-projekt och inte för MTP-testprogram.
  • MTP-specifika kommandoradsalternativ som anges efter -- behandlas som RunSettings-argument för VSTest-projekt.

Viktiga lärdomar

  • Om du vill köra MTP-testprogram i dotnet test VSTest-läge bör du använda Microsoft.Testing.Platform.MSBuild, skicka MTP-specifika kommandoradsalternativ efter extra --och ange TestingPlatformDotnetTestSupport till true.
  • VSTest-orienterade kommandoradsalternativ ignoreras tyst.

På grund av dessa problem har .NET introducerat ett nytt dotnet test läge som är särskilt utformat för MTP. Vi uppmuntrar MTP-användare att övergå från VSTest-läget dotnet test till det nya läget med .NET 10 SDK.

Microsoft.Testing.Platform (MTP)-läge dotnet test

För att åtgärda de problem som uppstår vid körning dotnet test med MTP i VSTest-läge introducerade .NET ett nytt läge i .NET 10 SDK som är särskilt utformat för MTP.

Om du vill aktivera det här läget lägger du till en dotnet.config fil i roten på lagringsplatsen eller lösningen.

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

Viktigt!

Upplevelsen dotnet test för MTP stöds endast i Microsoft.Testing.Platform version 1.7 och senare.

Eftersom det här läget är särskilt utformat för Microsoft.Testing.Platform krävs varken TestingPlatformDotnetTestSupport eller ytterligare -- .

Viktigt!

Det här läget är endast kompatibelt med Microsoft.Testing.Platform version 1.7.0 och senare.

Viktigt!

Om testprojektet stöder VSTest men inte stöder MTP genereras ett fel.

Tips/Råd

Du kan anpassa kommandoradsargumenten för testprogrammet via TestingPlatformCommandLineArguments egenskapen MSBuild:

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