Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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 test
finns 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ändaMicrosoft.Testing.Platform.MSBuild
, skicka MTP-specifika kommandoradsalternativ efter extra--
och angeTestingPlatformDotnetTestSupport
tilltrue
. - 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>