I progetti di test MTP vengono compilati come eseguibili che possono essere eseguiti (o sottoposti a debug) direttamente. Non ci sono ulteriori test che riguardano la console o i comandi. L'app viene chiusa con un codice di uscita diverso da zero se si verifica un errore, che è tipico per la maggior parte dei file eseguibili. Per altre informazioni sui codici di uscita noti, vedere Codici di uscita MTP.
La pubblicazione del project di test usando dotnet publish e l'esecuzione diretta dell'app è un altro modo per eseguire i test. Ad esempio, l'esecuzione del ./Contoso.MyTests.exe. In alcuni scenari è anche possibile usare dotnet build per produrre l'eseguibile, ma esistono casi limite da considerare, ad esempio Nativo AOT.
Utilizzare dotnet run.
Il comando dotnet run può essere usato per compilare ed eseguire il project di test. Questo è il modo più semplice, anche se a volte più lento, per eseguire i test. L'uso di dotnet run è pratico quando si modificano ed eseguono test in locale, perché garantisce che il project di test venga ricompilato quando necessario.
dotnet run troverà automaticamente anche il project nella cartella corrente.
dotnet run --project Contoso.MyTests
Per ulteriori informazioni su dotnet run, consultare dotnet run.
Utilizzare dotnet exec.
Il comando dotnet exec o dotnet viene usato per eseguire (o eseguire) un project di test già compilato, questa è un'alternativa all'esecuzione diretta dell'applicazione.
dotnet exec richiede il percorso del dll di progetto di test compilato.
dotnet exec Contoso.MyTests.dll
o
dotnet Contoso.MyTests.dll
Annotazioni
Se si specifica il percorso del file eseguibile project di test (*.exe) viene generato un errore:
Error:
An assembly specified in the application dependencies manifest
(Contoso.MyTests.deps.json) has already been found but with a different
file extension:
package: 'Contoso.MyTests', version: '1.0.0'
path: 'Contoso.MyTests.dll'
previously found assembly: 'S:\t\Contoso.MyTests\bin\Debug\net10.0\Contoso.MyTests.exe'
Per ulteriori informazioni su dotnet exec, consultare dotnet exec.
Utilizzare dotnet test.
A partire da .NET 10 SDK, dotnet test è disponibile una modalità MTP dedicata. Selezionare MTP tramite global.jsonoppure usare la DOTNET_TEST_RUNNER variabile di ambiente con .NET 11 Preview 6 o versione successiva. La modalità dedicata supporta progetti, soluzioni, moduli di test compilati e tipi di input aggiuntivi nelle versioni più recenti dell'SDK.
dotnet test --test-modules Contoso.MyTests.dll
Per la selezione del runner e per la migrazione dalla modalità compatibile con VSTest, vedere Test con dotnet test.
I test MTP possono essere eseguiti (e sottoposto a debug) in Visual Studio, si integrano con Esplora test e possono anche essere eseguiti direttamente come progetto di avvio.
Eseguire l'app con Visual Studio
I progetti di test MTP sono costruiti come eseguibili e possono essere eseguiti direttamente. Vengono eseguiti tutti i test nell'eseguibile specificato, a meno che non venga specificato un filtro.
- Passare al progetto di test che si desidera eseguire in Esplora soluzioni, quindi selezionarlo con il pulsante destro del mouse e scegliere Set as Startup Project.
- Selezionare Debug>Start without Debugging (o usare Ctrl+F5) per eseguire il project di test selezionato.
La finestra della console viene visualizzata con l'esecuzione e il riepilogo del test.
Eseguire il debug dell'app direttamente in Visual Studio
È possibile eseguire direttamente il debug del progetto di test MTP. Per eseguire il debug di tutti i test nell'eseguibile specificato, a meno che non venga specificato un filtro:
- Passare al progetto di test che si desidera eseguire in Esplora soluzioni, quindi selezionarlo con il pulsante destro del mouse e scegliere Set as Startup Project.
- Impostare il punto di interruzione nel test di cui si vuole eseguire il debug.
- Passare a Debug>Avvia debug (o premere F5) per eseguire il debug del project di test selezionato.
Tutti i test vengono eseguiti fino a quando non viene raggiunto un test con un punto di interruzione. Procedi passo passo nel tuo test per eseguirne il debug. Al termine del debug, l'app riprende l'esecuzione di tutti i test rimanenti, a meno che non venga interrotta.
Usare il Test Explorer
Per eseguire un test, passare a Esplora test, selezionare il test (o i test) da eseguire. Selezionarlo con il pulsante destro del comando e scegliere Esegui. Per eseguire il debug di un test, selezionare il test (o i test) in Esplora test , fare clic con il tasto destro del mouse e scegliere Debug.
Annotazioni
L'aggiornamento dei test senza la compilazione automatica del progetto non è disponibile.
L'estensione C# insieme a C# Dev Kit consente di eseguire il debug/esecuzione di test nel codice Visual Studio e aggiunge l'integrazione con Esplora test di Visual Studio Codice.
Eseguire l'app con codice Visual Studio
I progetti di test MTP sono costruiti come eseguibili e possono essere eseguiti direttamente. Vengono eseguiti tutti i test nell'eseguibile specificato, a meno che non venga specificato un filtro.
- Passare a un file di test per cui si vogliono eseguire i test.
- Usare Ctrl+F5 per eseguire il project di test selezionato. Se si dispone di più progetti, verrà chiesto di selezionare quello da eseguire.
La finestra della console viene visualizzata con l'esecuzione e il riepilogo del test.
Eseguire il debug dell'app direttamente in codice Visual Studio
I progetti di test MTP sono costruiti come eseguibili e possono essere eseguiti direttamente. Vengono eseguiti tutti i test nell'eseguibile specificato, a meno che non venga specificato un filtro.
- Passare a un file di test per cui si vogliono eseguire i test.
- Usare F5 per eseguire il debug del project di test selezionato. Se si dispone di più progetti, verrà chiesto di selezionare quello da eseguire.
Suggerimento
Esistono diversi altri modi per eseguire un project dotnet usando C# DevKit, ad esempio l'esecuzione da solution explorer o la creazione di configurazioni di avvio corrispondenti. Questi elementi vengono specificati nella documentazione del codice Visual Studio.
Quando il progetto viene eseguito, la scheda di output viene visualizzata con l'esecuzione e il riepilogo del test.
Usare il Test Explorer
Per eseguire un test, passare a Esplora test, selezionare il test (o i test) da eseguire. Selezionarlo con il pulsante destro del comando e scegliere Esegui. Per eseguire il debug di un test, selezionare il test (o i test) in Esplora test , fare clic con il tasto destro del mouse e scegliere Debug.
Annotazioni
L'aggiornamento dei test senza la compilazione automatica del progetto non è disponibile.
Per eseguire più progetti di test in parallelo, richiamare dotnet test una sola volta per la soluzione anziché aggiungere un passaggio della pipeline per ogni eseguibile di test. Quando si aggiunge un progetto di test MTP alla soluzione, lo stesso comando lo include senza alcuna modifica della pipeline.
Eseguire una soluzione in Azure Pipelines
Usare .NET 10 SDK o versione successiva e MTP 1.7 o versione successiva. Tutti i progetti di test nella soluzione devono supportare MTP; I progetti di test solo VSTest non sono supportati in questa modalità. Per le versioni precedenti dell'SDK, vedere Eseguire progetti MTP con la modalità VSTest.
Nella radice del repository creare un global.json file con il contenuto seguente. Se il file esiste già, aggiungere la test sezione e assicurarsi che le impostazioni dell'SDK selezionino .NET 10 o versione successiva.
{
"test": {
"runner": "Microsoft.Testing.Platform"
}
}
Per i report TRX, ogni progetto di test deve fare riferimento a Microsoft.Testing.Extensions.TrxReport, direttamente o tramite una configurazione o un profilo dell'SDK di test che lo include. Per informazioni dettagliate, vedere Visual Studio report di test (TRX).
Aggiungere il file seguente azure-pipelines.yml al repository. L'esempio presuppone che Contoso.sln e global.json si trovino nella radice del repository. Sostituire Contoso.sln con il percorso della soluzione relativo al repository.
trigger:
- main
pool:
vmImage: ubuntu-latest
steps:
- task: UseDotNet@2
displayName: Install .NET SDK
inputs:
packageType: sdk
version: 10.0.x
- task: DotNetCoreCLI@2
displayName: Run solution tests
inputs:
command: test
projects: Contoso.sln
arguments: --configuration Release --max-parallel-test-modules 4
workingDirectory: $(Build.SourcesDirectory)
publishTestResults: true
Il DotNetCoreCLI@2 task richiama dotnet test una sola volta per la soluzione. Il comando ripristina le dipendenze, compila la soluzione ed esegue i moduli di test MTP in parallelo. Per impostazione predefinita, dotnet test può eseguire fino a Environment.ProcessorCount moduli contemporaneamente. L'esempio usa --max-parallel-test-modules 4 per limitare la concorrenza a quattro moduli. Modificare il limite in modo che corrisponda alla CPU, alla memoria e ad altre risorse dell'agente.
Importante
Selezionare un file di soluzione in projects, non uno schema di file di progetto come **/*.csproj. L'attività richiama dotnet test separatamente per ogni file corrispondente, uno dopo l'altro. Una singola invocazione della soluzione consente a dotnet test di coordinare l'esecuzione parallela tra i progetti di test.
Il parallelismo a livello di modulo è separato dall'esecuzione parallela dei test all'interno di un modulo. Per configurare i test paralleli all'interno di un assembly, usare le impostazioni del framework di test. Per MSTest, vedere ParallelizeAttribute.
Con publishTestResults: true, l'attività aggiunge --report-trx e --results-directory e pubblica i report nella scheda Test dell'esecuzione della pipeline, anche se i test hanno esito negativo. Un codice di uscita diverso da zero dotnet test fa fallire anche l'attività e la pipeline.
Annotazioni
Il supporto MTP in DotNetCoreCLI@2 richiede la versione dell'attività 2.263.0 o successiva. Mantenere global.json nella directory di lavoro dell'attività in modo che sia l'attività che l'SDK .NET selezionino MTP.
Eseguire una soluzione con uno script
Per le versioni di attività senza supporto MTP o per controllare direttamente il comando dell'interfaccia della riga di comando, usare uno script e pubblicare i report TRX in un passaggio separato. Si applicano gli stessi requisiti di .NET SDK, global.json e dell'estensione TRX.
trigger:
- main
pool:
vmImage: ubuntu-latest
steps:
- task: UseDotNet@2
displayName: Install .NET SDK
inputs:
packageType: sdk
version: 10.0.x
- task: CmdLine@2
displayName: Run solution tests
inputs:
script: >-
dotnet test --solution Contoso.sln
--configuration Release
--max-parallel-test-modules 4
--results-directory "$(Agent.TempDirectory)"
--report-trx
workingDirectory: $(Build.SourcesDirectory)
- task: PublishTestResults@2
displayName: Publish test results
condition: succeededOrFailed()
inputs:
testResultsFormat: VSTest
testResultsFiles: '**/*.trx'
searchFolder: $(Agent.TempDirectory)
failTaskOnFailedTests: true
failTaskOnMissingResultsFile: true
La succeededOrFailed() condizione pubblica i risultati dopo un'esecuzione di test riuscita o non riuscita. Il codice di uscita diverso da zero dello script continua a far fallire la pipeline. Per evitare la sovrascrittura dei report tra i moduli, non assegnare lo stesso nome di file TRX a ogni modulo. Per le opzioni di denominazione e isolamento, vedere Nomi di file di report.
Eseguire un singolo eseguibile di test
Per un singolo progetto di test, compilare o pubblicare il progetto prima di richiamarne direttamente il file eseguibile:
- task: CmdLine@2
displayName: "Run Contoso.MyTests"
inputs:
script: '.\Contoso.MyTests\bin\Debug\net10.0\Contoso.MyTests.exe'