Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo illustra come eseguire la migrazione da VSTest a Microsoft.Testing.Platform.
Acconsentire esplicitamente all'uso di Microsoft.Testing.Platform
Il primo passaggio della migrazione consiste nell'acconsentire esplicitamente all'uso di Microsoft.Testing.Platform.
Per tutti i framework di test, aggiungere <OutputType>Exe</OutputType> a tutti i progetti di test nella soluzione. Successivamente, seguire le indicazioni specifiche del framework.
MSTest
Microsoft.Testing.Platform è supportato da MSTest a partire dalla versione 3.2.0. È tuttavia consigliabile eseguire l'aggiornamento alla versione MSTest più recente disponibile.
Per aderire, aggiungere <EnableMSTestRunner>true</EnableMSTestRunner> sotto un PropertyGroup nel file Directory.Build.props.
Annotazioni
Quando si utilizza MSTest.Sdk, Microsoft.Testing.Platform viene utilizzato per impostazione predefinita, a meno che <UseVSTest>true</UseVSTest> non sia stato specificato.
NUnit
Microsoft.Testing.Platform è supportato da NUnit3TestAdapter a partire dalla versione 5.0.0.
Per acconsentire esplicitamente, aggiungere <EnableNUnitRunner>true</EnableNUnitRunner> sotto PropertyGroup nel file Directory.Build.props.
xUnit.net
Microsoft.Testing.Platform è supportato a partire da xunit.v3.
Per aderire, aggiungere <UseMicrosoftTestingPlatformRunner>true</UseMicrosoftTestingPlatformRunner> sotto un PropertyGroup nel file Directory.Build.props.
dotnet test
Acconsentire esplicitamente a .NET 9 SDK e versioni precedenti
In .NET 9 SDK e versioni precedenti non è disponibile alcun supporto nativo per Microsoft.Testing.Platform per dotnet test. Il supporto è basato sull'infrastruttura VSTest. Per usarlo, aggiungere <TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport> sotto un PropertyGroup in un file Directory.Build.props.
Importante
Quando si esegue il supporto di Microsoft.Testing.Platform in questa modalità, è necessario aggiungere -- per separare gli dotnet test argomenti dai nuovi argomenti della piattaforma. Ad esempio: dotnet test --no-build -- --list-tests.
Acconsentire esplicitamente a .NET 10 SDK e versioni successive
A partire da .NET 10 SDK, è disponibile il supporto nativo per Microsoft.Testing.Platform. Per usarlo, è necessario specificare il test runner come Microsoft.Testing.Platform in global.json:
{
"test": {
"runner": "Microsoft.Testing.Platform"
}
}
Importante
In questa modalità, l'extra -- non viene più usato.
Aggiornare dotnet test le chiamate
Le opzioni della riga di comando di dotnet test sono suddivise in due categorie: argomenti correlati alla compilazione e quelli correlati ai test.
Gli argomenti correlati alla compilazione sono irrilevanti per la piattaforma di test e, di conseguenza, non devono essere aggiornati per la nuova piattaforma. Gli argomenti relativi alla build sono elencati qui:
-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>
Gli argomenti correlati al test sono specifici di VSTest e quindi devono essere trasformati in modo che corrispondano alla nuova piattaforma. La tabella seguente illustra il mapping tra gli argomenti VSTest e la nuova piattaforma:
| Argomento VSTest | Nuovo argomento della piattaforma |
|---|---|
--test-adapter-path <ADAPTER_PATH> |
Non rilevante per Microsoft.Testing.Platform |
--blame |
Non rilevante per Microsoft.Testing.Platform |
--blame-crash |
--crashdump (richiede l'estensione di dump di arresto anomalo del sistema) |
--blame-crash-dump-type <DUMP_TYPE> |
--crashdump-type (richiede l'estensione di dump di arresto anomalo del sistema) |
--blame-crash-collect-always |
Non supportato |
--blame-hang |
--hangdump (richiede l'estensione Hang dump) |
--blame-hang-dump-type <DUMP_TYPE> |
--hangdump-type (richiede l'estensione Hang dump) |
--blame-hang-timeout <TIMESPAN> |
--hangdump-timeout (richiede l'estensione Hang dump) |
--collect <DATA_COLLECTOR_NAME> |
Dipende dall'agente di raccolta dati |
-d\|--diag <LOG_FILE> |
--diagnostic |
--filter <EXPRESSION> |
Dipende dal framework di test selezionato |
-l\|--logger <LOGGER> |
Dipende dal logger |
--results-directory <RESULTS_DIR> |
--results-directory <RESULTS_DIR> |
-s\|--settings <SETTINGS_FILE> |
Dipende dal framework di test selezionato |
-t\|--list-tests |
--list-tests |
-- <RunSettings arguments> |
--test-parameter (fornito da VSTestBridge) |
--collect
--collect è un punto di estendibilità generale in VSTest per qualsiasi agente di raccolta dati. Il modello di estendibilità di Microsoft.Testing.Platform è diverso e non esiste tale argomento centralizzato da usare da tutti gli agenti di raccolta dati. Con Microsoft.Testing.Platform, ogni agente di raccolta dati può aggiungere una propria opzione della riga di comando. Ad esempio, l'esecuzione di Microsoft CodeCoverage tramite VSTest potrebbe essere simile alla seguente:
dotnet test --collect "Code Coverage;Format=cobertura"
Con Microsoft.Testing.Platform, diventa:
dotnet test --coverage --coverage-output-format cobertura
Importante
Come spiegato in precedenza, quando si usa Microsoft.Testing.Platform con VSTest, è necessario un ulteriore -- prima di passare gli argomenti alla piattaforma.
Quindi, questo diventa dotnet test -- --coverage --coverage-output-format cobertura.
--filter
--filter è il filtro basato su VSTest.
MSTest e NUnit supportano lo stesso formato di filtro anche durante l'esecuzione con Microsoft.Testing.Platform.
xUnit.net, non supporta lo stesso formato di filtro durante l'esecuzione con Microsoft.Testing.Platform. È necessario eseguire la migrazione dal filtro basato su VSTest al nuovo supporto del filtro in xunit.v3, disponibile usando le opzioni della riga di comando seguenti.
xUnit.net opzioni specifiche:
--filter-class--filter-not-class--filter-method--filter-not-method--filter-namespace--filter-not-namespace--filter-trait--filter-not-trait--filter-query
Per altre informazioni, vedere la documentazione di Microsoft.Testing.Platform per xUnit.net e Query Filter Language for xUnit.net.
--logger
Ciò che si chiama solitamente "logger" in VSTest è chiamato "reporter" in Microsoft.Testing.Platform. In Microsoft.Testing.Platform la registrazione viene eseguita in modo esplicito solo a scopo di diagnosi.
Analogamente a --collect, --logger è un punto di estendibilità generale in VSTest per qualsiasi logger (o, nel contesto di Microsoft.Testing.Platform, qualsiasi reporter). Ogni reporter di Microsoft.Testing.Platform ha la libertà di aggiungere una propria opzione della riga di comando e, pertanto, non esiste un'opzione della riga di comando centralizzata come quella di VSTest --logger.
Uno dei logger VSTest usati molto comunemente è il logger TRX. Questo logger viene in genere chiamato come segue:
dotnet test --logger trx
Con Microsoft.Testing.Platform, il comando diventa:
dotnet test --report-trx
Importante
Per usare --report-trx, è necessario che sia installato il Microsoft.Testing.Extensions.TrxReport pacchetto NuGet.
Importante
Come spiegato in precedenza, quando si usa Microsoft.Testing.Platform con la base di VSTest dotnet test, è necessario un elemento aggiuntivo -- prima degli argomenti destinati ad essere passati alla piattaforma.
Quindi, questo diventa dotnet test -- --report-trx.
--settings
VSTest --settings viene usato per specificare un file RunSettings per l'esecuzione del test. RunSettings non è supportato dal core Microsoft.Testing.Platform ed è stato sostituito da un file di configurazione più moderno testconfig.json . Tuttavia, MSTest e NUnit supportano ancora runSettings precedenti durante l'esecuzione di Microsoft.Testing.Platform ed --settings è ancora supportato.
vstest.console.exe
Se si usa vstest.console.exe direttamente, è consigliabile sostituirlo con il dotnet test comando .
Esploratore di test
Quando si usa Visual Studio o Esplora test di Visual Studio Code, potrebbe essere necessario abilitare il supporto per Microsoft.Testing.Platform.
Visual Studio
Esplora Test di Visual Studio supporta Microsoft.Testing.Platform a partire dalla versione 17.14. Se si usa una versione precedente, potrebbe essere necessario aggiornare Visual Studio alla versione più recente.
Visual Studio Code
Visual Studio Code con C# DevKit supporta Microsoft.Testing.Platform.
Azure DevOps
Quando si usano le attività di Azure DevOps, potrebbe essere necessario aggiornare la pipeline per usare Microsoft.Testing.Platform, a seconda dell'attività usata.
Attività VSTest
Se si usa l'attività VSTest in Azure DevOps, è possibile sostituirla con l'attività .NET Core.
Attività CLI di .NET Core
Se hai passato un
argumentspersonalizzato all'attività, segui le stesse indicazioni per la migrazione didotnet test.Se si usa l'attività DotNetCoreCLI senza acconsentire esplicitamente all'esperienza nativa di Microsoft.Testing.Platform per .NET 10 SDK e versioni successive tramite
global.jsonfile, è necessario impostare l'attivitàargumentsin modo che punti correttamente alla directory dei risultati a cui punta, nonché al report TRX richiesto. Per esempio:- task: DotNetCoreCLI@2 displayName: Run unit tests inputs: command: 'test' arguments: '-- --report-trx --results-directory $(Agent.TempDirectory)