Condividi tramite


Panoramica di Microsoft.Testing.Platform

Microsoft.Testing.Platform è un'alternativa leggera e portabile a VSTest per l'esecuzione di test in tutti i contesti, inclusi pipeline di integrazione continua (CI), interfaccia della riga di comando, Esplora test di Visual Studio ed Esplora testo di VS Code. Microsoft.Testing.Platform è incorporato direttamente nei progetti di test e non sono presenti altre dipendenze da app, come ad esempio vstest.console o dotnet test per eseguire i test.

Microsoft.Testing.Platform è open source. È possibile trovare il codice Microsoft.Testing.Platform nel repository microsoft/testfx di GitHub.

Pilastri di Microsoft.Testing.Platform

Questa nuova piattaforma di test si basa sull'esperienza del team di test di .NET Developer Experience Testing e mira a risolvere le sfide riscontrate dal rilascio di .NET Core nel 2016. Anche se esiste un elevato livello di compatibilità tra .NET Framework e .NET Core/.NET, alcune funzionalità chiave come il sistema plug-in e i nuovi possibili fattori di forma delle compilazioni .NET lo hanno reso complesso per evolvere o supportare completamente la nuova funzionalità di runtime con l'architettura corrente della piattaforma VSTest.

I principali fattori di guida per l'evoluzione della nuova piattaforma di test sono descritti in dettaglio nel modo seguente:

  • Determinismo: garantire che l'esecuzione degli stessi test in contesti diversi (locale, CI) producano lo stesso risultato. Il nuovo runtime non si basa sulla reflection o su altre funzionalità di runtime .NET dinamiche per coordinare un'esecuzione di test.

  • Trasparenza del runtime: il runtime di test non interferisce con il codice del framework di test, non crea contesti isolati come AppDomain o AssemblyLoadContexte non usa reflection o resolver di assembly personalizzati.

  • Registrazione in fase di compilazione delle estensioni: le estensioni, ad esempio i framework di test e le estensioni in/out-of-process, vengono registrate durante la fase di compilazione per garantire determinismo e facilitare il rilevamento delle incoerenze.

  • Zero dipendenze: il nucleo della piattaforma è un singolo assembly .NET, Microsoft.Testing.Platform.dll, che non ha dipendenze diverse dai runtime supportati.

  • Ospitabile: il runtime di test può essere ospitato in qualsiasi applicazione .NET. Mentre un'applicazione console viene comunemente usata per eseguire i test, è possibile creare un'applicazione di test in qualsiasi tipo di applicazione .NET. In questo modo è possibile eseguire test all'interno di contesti speciali, ad esempio dispositivi o browser, in cui potrebbero esserci limitazioni.

  • Supportare tutti i fattori di forma .NET: supportare fattori di forma .NET correnti e futuri, tra cui AOT nativo.

  • Prestazioni elevate: trovare il giusto equilibrio tra le funzionalità e i punti di estensione per evitare di gonfiare il runtime con codice non fondamentale. La nuova piattaforma di test è progettata per "orchestrare" un'esecuzione di test, invece di fornire dettagli sull'implementazione su come eseguire questa operazione.

  • Estendibile abbastanza: la nuova piattaforma è basata su punti di estendibilità per consentire la massima personalizzazione dell'esecuzione del runtime. Consente di configurare l'host del processo di test, osservare il processo di test e utilizzare le informazioni del framework di test all'interno del processo host di test.

  • Distribuzione di un singolo modulo: la funzionalità di hostbilità consente un modello di distribuzione di un singolo modulo, in cui è possibile usare un singolo risultato di compilazione per supportare tutti i punti di estendibilità, sia out-of-process che in-process, senza la necessità di spedire moduli eseguibili diversi.

Framework di test supportati

Eseguire i test e il debug

I progetti di test di Microsoft.Testing.Platform vengono compilati come eseguibili che possono essere eseguiti (o sottoposti a debug) direttamente. Non sono disponibili console o comandi aggiuntivi per l'esecuzione dei test. In caso di errore, l'app viene chiusa con un codice di uscita diverso da zero, come avviene nella maggior parte degli eseguibili. Per altre informazioni sui codici di uscita noti, vedere Codici di uscita di Microsoft.Testing.Platform.

Importante

Per impostazione predefinita, Microsoft.Testing.Platform raccoglie i dati di telemetria. Per altre informazioni e opzioni relative al rifiuto esplicito, vedere Dati di telemetria di Microsoft.Testing.Platform.

Pubblicare il progetto di test usando dotnet publish ed eseguire direttamente l'app è un altro modo per eseguire i test. Ad esempio, l'esecuzione di ./Contoso.MyTests.exe. In alcuni scenari è anche possibile usare dotnet build per produrre l'eseguibile, ma possono esserci casi limite da considerare, come l'AOT nativo.

Utilizzare dotnet run

Il comando dotnet run può essere usato per compilare ed eseguire il progetto 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 i test in locale, perché garantisce che il progetto di test venga ricompilato quando necessario. dotnet run troverà automaticamente il progetto nella cartella corrente.

dotnet run --project Contoso.MyTests

Per altre informazioni su dotnet run, vedere dotnet run.

Utilizzare dotnet exec

Il comando dotnet exec o dotnet viene usato per eseguire un progetto di test già compilato. Questa è un'alternativa all'esecuzione diretta dell'applicazione. dotnet exec richiede il percorso della DLL del progetto di test compilato.

dotnet exec Contoso.MyTests.dll

oppure

dotnet Contoso.MyTests.dll

Nota

Specificando il percorso dell'eseguibile del progetto di test (*.exe) si ottiene l'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\net8.0\Contoso.MyTests.exe'

Per altre informazioni su dotnet exec, vedere dotnet exec.

Utilizzare dotnet test.

Microsoft.Testing.Platform offre un livello di compatibilità con vstest.console.exe e dotnet test che garantisce l'esecuzione dei test come prima, pur abilitando nuovi scenari di esecuzione.

dotnet test Contoso.MyTests.dll

Opzioni

L'elenco seguente descrive solo le opzioni della piattaforma. Per visualizzare le opzioni specifiche portate da ogni estensione, fare riferimento alla pagina della documentazione dell'estensione o usare l'opzione --help.

  • --diagnostic

Abilita la registrazione diagnostica. Il livello di log predefinito è Trace. Il file viene scritto nella directory di output con il formato del nome seguente, log_[MMddHHssfff].diag.

  • --diagnostic-filelogger-synchronouswrite

Forza il logger di file integrato a scrivere i log in modo sincrono. Utile per gli scenari in cui non si vuole perdere nessuna voce di registro (se il processo si arresta in modo anomalo). In questo modo viene rallentata l'esecuzione dei test.

  • --diagnostic-output-directory

La directory di output della registrazione diagnostica. Se non specificato, il file viene generato nella directory predefinita TestResults.

  • --diagnostic-output-fileprefix

Il prefisso del nome del file di log. Il valore predefinito è "log_".

  • --diagnostic-verbosity

Definisce il livello di dettaglio quando viene usata l'opzione --diagnostic. I valori disponibili sono Trace, Debug, Information, Warning, Erroro Critical.

  • --help

Stampa le istruzioni di utilizzo del comando.

  • -ignore-exit-code

Consente di ignorare alcuni codici di uscita diversi da zero e di restituirli come 0. Per altre informazioni, vedere Ignorare codici di uscita specifici.

  • --info

Visualizza informazioni avanzate sull'applicazione di test .NET, ad esempio:

  • La piattaforma.
  • L’ambiente.
  • Ogni provider della riga di comando registrato, ad esempio, name, version, description e options.
  • Ogni strumento registrato, ad esempio, command, name, version, description e tutti i provider della riga di comando.

Questa funzionalità viene usata per comprendere le estensioni che registrano la stessa opzione della riga di comando o le modifiche alle opzioni disponibili tra più versioni di un'estensione (o della piattaforma).

  • --list-tests

Elencare i test disponibili. I test non verranno eseguiti.

  • --minimum-expected-tests

Specifica il numero minimo di test che devono essere eseguiti. Per impostazione predefinita, è previsto che venga eseguito almeno un test.

  • --results-directory

Directory in cui verranno inseriti i risultati del test. Se la directory specificata non esiste, viene creata. Il valore predefinito è TestResults nella directory che contiene l'applicazione di test.

Integrazione di MSBuild

Il pacchetto NuGet Microsoft.Testing.Platform.MSBuild offre varie integrazioni per Microsoft.Testing.Platform con MSBuild:

  • Supporto di dotnet test. Per altre informazioni, vedere Integrazione di test dotnet.
  • Supporto per ProjectCapability richiesto da Visual Studio e Visual Studio Code Esplora test.
  • Generazione automatica del punto di ingresso (metodo Main).
  • Generazione automatica del file di configurazione.

Nota

Questa integrazione funziona in modo transitivo (un progetto che fa riferimento a un altro progetto, che fa riferimento a questo pacchetto si comporta come se facesse riferimento al pacchetto) e può essere disabilitato tramite la proprietà MSBuild IsTestingPlatformApplication.

Vedi anche