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.
I den här artikeln får du lära dig hur du migrerar från VSTest till Microsoft.Testing.Platform.
Anmäl dig för att använda Microsoft.Testing.Platform
Det första steget i migreringen är att välja att använda Microsoft.Testing.Platform.
För alla testramverk lägger du till <OutputType>Exe</OutputType> i alla testprojekt i lösningen. Därefter följer du den ramverksspecifika vägledningen.
MSTest
Microsoft.Testing.Platform stöds av MSTest från och med 3.2.0. Vi rekommenderar dock att du uppdaterar till den senaste tillgängliga MSTest-versionen.
Om du vill anmäla dig, lägg till <EnableMSTestRunner>true</EnableMSTestRunner> under en PropertyGroup i Directory.Build.props-filen.
Anmärkning
När du använder MSTest.Sdk används Microsoft.Testing.Platform som standard, såvida inte <UseVSTest>true</UseVSTest> anges.
NUnit
Microsoft.Testing.Platform stöds av NUnit3TestAdapter från och med 5.0.0.
Om du vill anmäla dig lägger du till <EnableNUnitRunner>true</EnableNUnitRunner> under en PropertyGroup i Directory.Build.props-filen.
xUnit.net
Microsoft.Testing.Platform stöds från och med xunit.v3.
För att välja att aktivera, lägger du till <UseMicrosoftTestingPlatformRunner>true</UseMicrosoftTestingPlatformRunner> under PropertyGroup i Directory.Build.props-filen.
dotnet test
Anmäl dig för .NET 9 SDK och tidigare
I .NET 9 SDK och tidigare finns det inget internt stöd för Microsoft.Testing.Platform för dotnet test. Supporten bygger på VSTest-infrastrukturen. Om du vill använda det lägger du till <TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport> under en PropertyGroup i-fil Directory.Build.props .
Viktigt!
När du kör Microsoft.Testing.Platform-stöd i det här läget måste du lägga -- till för att skilja argumenten dotnet test från de nya plattformsargumenten. Till exempel dotnet test --no-build -- --list-tests.
Anmäl dig för .NET 10 SDK och senare
Från och med .NET 10 SDK finns det inbyggt stöd för Microsoft.Testing.Platform. Om du vill använda den måste du ange testkörare som Microsoft.Testing.Platform i global.json:
{
"test": {
"runner": "Microsoft.Testing.Platform"
}
}
Viktigt!
I det här läget används inte längre tillägget -- .
Uppdatera dotnet test anrop
Kommandoradsalternativen dotnet test för är indelade i två kategorier: byggrelaterade argument och testrelaterade.
De byggrelaterade argumenten är irrelevanta för testplattformen och behöver därför inte uppdateras för den nya plattformen. Byggrelaterade argument visas här:
-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>
Testrelaterade argument är VSTest-specifika och måste därför transformeras för att matcha den nya plattformen. I följande tabell visas mappningen mellan VSTest-argumenten och den nya plattformen:
| VSTest-argument | Nytt plattformsargument |
|---|---|
--test-adapter-path <ADAPTER_PATH> |
Inte relevant för Microsoft.Testing.Platform |
--blame |
Inte relevant för Microsoft.Testing.Platform |
--blame-crash |
--crashdump (kräver tillägg för kraschdumpar) |
--blame-crash-dump-type <DUMP_TYPE> |
--crashdump-type (kräver tillägg för kraschdumpar) |
--blame-crash-collect-always |
Stöds inte |
--blame-hang |
--hangdump (kräver tillägg för hängdump) |
--blame-hang-dump-type <DUMP_TYPE> |
--hangdump-type (fordrar Hang dump-tillägg) |
--blame-hang-timeout <TIMESPAN> |
--hangdump-timeout (hängdumpstillägg krävs) |
--collect <DATA_COLLECTOR_NAME> |
Beror på datainsamlaren |
-d\|--diag <LOG_FILE> |
--diagnostic |
--filter <EXPRESSION> |
Beror på det valda testramverket |
-l\|--logger <LOGGER> |
Beror på loggaren |
--results-directory <RESULTS_DIR> |
--results-directory <RESULTS_DIR> |
-s\|--settings <SETTINGS_FILE> |
Beror på det valda testramverket |
-t\|--list-tests |
--list-tests |
-- <RunSettings arguments> |
--test-parameter (tillhandahålls av VSTestBridge) |
--collect
--collect är en allmän utökningspunkt i VSTest för alla datainsamlare. Utökningsmodellen för Microsoft.Testing.Platform är annorlunda och det finns inget sådant centraliserat argument som ska användas av alla datainsamlare. Med Microsoft.Testing.Platform kan varje datainsamlare lägga till ett eget kommandoradsalternativ. Att till exempel köra Microsoft CodeCoverage via VSTest kan likna följande:
dotnet test --collect "Code Coverage;Format=cobertura"
Med Microsoft.Testing.Platform blir detta:
dotnet test --coverage --coverage-output-format cobertura
Viktigt!
Som vi förklarade tidigare, när du använder Microsoft.Testing.Platform med VSTest-baserade dotnet test behövs extra -- före de argument som är avsedda att skickas till plattformen.
Det här blir alltså dotnet test -- --coverage --coverage-output-format cobertura.
--filter
--filter är det VSTest-baserade filtret.
MSTest och NUnit stöder samma filterformat även när de körs med Microsoft.Testing.Platform.
xUnit.net stöder inte samma filterformat när du kör med Microsoft.Testing.Platform. Du måste migrera från det VSTest-baserade filtret till det nya filterstödet i xunit.v3, som tillhandahålls med hjälp av följande kommandoradsalternativ.
xUnit.net specifika alternativ:
--filter-class--filter-not-class--filter-method--filter-not-method--filter-namespace--filter-not-namespace--filter-trait--filter-not-trait--filter-query
Mer information finns i Dokumentationen om Microsoft.Testing.Platform för xUnit.net och Frågefilterspråk för xUnit.net.
--logger
Det som vanligtvis kallades "logger" i VSTest kallas "reporter" i Microsoft.Testing.Platform. I Microsoft.Testing.Platform är loggning uttryckligen endast avsett för diagnostisering.
Liknande --collect, --logger är en generell utökningspunkt i VSTest för alla loggare (eller, inom Microsoft.Testing.Platform, en valfri reporter). Varje Microsoft.Testing.Platform-reporter kan lägga till ett eget kommandoradsalternativ och därför finns det inget centraliserat kommandoradsalternativ som VSTests --logger.
En av de mycket vanliga VSTest-loggarna är TRX-loggaren. Den här loggaren anropas vanligtvis på följande sätt:
dotnet test --logger trx
Med Microsoft.Testing.Platform blir kommandot:
dotnet test --report-trx
Viktigt!
Om du vill använda --report-trxmåste du ha Microsoft.Testing.Extensions.TrxReport NuGet-paketet installerat.
Viktigt!
Som vi förklarade tidigare, när du använder Microsoft.Testing.Platform med VSTest-baserade dotnet test behövs extra -- innan de argument som är avsedda att skickas till plattformen.
Så det här blir dotnet test -- --report-trx.
--settings
VSTest's --settings används för att specificera en RunSettings-fil för testkörningen. RunSettings stöds inte av kärnan Microsoft.Testing.Platform och ersattes av en modernare testconfig.json konfigurationsfil. MSTest och NUnit stöder dock fortfarande de gamla RunSettings när du kör Microsoft.Testing.Platform och --settings stöds fortfarande.
vstest.console.exe
Om du använder vstest.console.exe direkt rekommenderar vi att du ersätter det med dotnet test kommandot .
Testutforskaren
När du använder Visual Studio eller Visual Studio Code Test Explorer kan du behöva aktivera stödet för Microsoft.Testing.Platform.
Visual Studio
Visual Studio Test Explorer stöder Microsoft.Testing.Platform från och med version 17.14. Om du använder en tidigare version kan du behöva uppdatera Visual Studio till den senaste versionen.
Visual Studio Code
Visual Studio Code med C# DevKit stöder Microsoft.Testing.Platform.
Azure DevOps
När du använder Azure DevOps-uppgifter kan du behöva uppdatera din pipeline för att använda Microsoft.Testing.Platform, beroende på vilken uppgift du använder.
VSTest-uppgift
Om du använder VSTest-uppgiften i Azure DevOps kan du ersätta den med .NET Core-aktiviteten.
.NET Core CLI-uppgift
Om du har anpassat
argumentsför uppgiften följer du samma vägledning fördotnet testmigrering.Om du använder DotNetCoreCLI-uppgiften utan att välja den interna Microsoft.Testing.Platform-upplevelsen för .NET 10 SDK och senare via
global.jsonfilen måste du ange att aktivitetenargumentsska peka korrekt på den resultatkatalog som den brukade peka på, samt den begärda TRX-rapporten. Till exempel:- task: DotNetCoreCLI@2 displayName: Run unit tests inputs: command: 'test' arguments: '-- --report-trx --results-directory $(Agent.TempDirectory)