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, tra cui pipeline di integrazione continua (CI), interfaccia a riga di comando, Esplora test di Visual Studio ed Esplora test di VS Code. Microsoft.Testing.Platform è incorporato direttamente nei progetti di test e non sono presenti altre dipendenze dell'app, ad esempio vstest.console o dotnet test necessarie per eseguire i test.

Consiglio

Per assistenza nella scelta tra VSTest e Microsoft.Testing.Platform, iniziare con Panoramica delle piattaforme di test.

Usare questo articolo quando si è già deciso di usare Microsoft.Testing.Platform e si vuole comprendere il modello, le funzionalità e il comportamento operativo.

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

Inizia qui

Usare il percorso seguente, in base alle esigenze successive:

Pilastri di Microsoft.Testing.Platform

Questa nuova piattaforma di test si basa sull'esperienza del team di test .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 hanno reso complessa l'evoluzione o il supporto completo della nuova funzionalità di runtime con la piattaforma VSTest corrente.

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) produca 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 i resolver di reflection o di assembly personalizzati.

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

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

  • Hostable: 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.

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

  • performante: trovare il giusto equilibrio tra le funzionalità e i punti di estensione per evitare di appesantire il runtime con codice non fondamentale. La nuova piattaforma di test è progettata per "orchestrare" l'esecuzione di una serie di test, piuttosto che fornire dettagli sull'implementazione di come eseguirli.

  • Extensible enough: la nuova piattaforma è basata su punti di estendibilità per consentire la personalizzazione massima 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.

  • singolo modulo di distribuzione: la funzionalità di hostability consente un modello di distribuzione di un singolo modulo, in cui è possibile usare un singolo output di compilazione per supportare tutti i punti di estendibilità, sia esterni che interni, senza la necessità di distribuire moduli eseguibili diversi.

Sistemi di test supportati

Framework di destinazione supportati

Microsoft.Testing.Platform supporta .NET (.NET 8 e versioni successive), .NET Framework (versioni 4.6.2 e successive) e ha come destinazione NETStandard 2.0 per garantire la massima compatibilità con altri runtime.

Avviare e fare il debug dei test

Per indicazioni dettagliate sull'esecuzione e il debug di progetti di test MTP dall'interfaccia della riga di comando, Visual Studio, codice Visual Studio e pipelines CI, vedere Eseguire ed eseguire test di debug.

Opzioni

Per l'elenco completo delle opzioni della riga di comando della piattaforma e dell'estensione, vedere Informazioni di riferimento sulle opzioni dell'interfaccia della riga di comando di Microsoft.Testing.Platform.

Integrazione di MSBuild

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

  • Supporto per dotnet test. Per altre informazioni, vedere Test con dotnet test.
  • Supporto per ProjectCapability richiesto da Visual Studio e Visual Studio Code Esploratori di test.
  • Generazione automatica del punto di ingresso ( metodoMain).
  • Generazione automatica del file di configurazione.
  • Rilevamento automatico e registrazione dei pacchetti di estensione installati.

Quando questo pacchetto è attivo (impostazione predefinita per MSTest, NUnit e strumenti di esecuzione xUnit), l'installazione di un pacchetto NuGet di estensione è tutto ciò che è necessario. Le estensioni vengono registrate automaticamente senza modifiche al codice. Se si disabilita il punto di ingresso generato automaticamente impostando <GenerateTestingPlatformEntryPoint>false</GenerateTestingPlatformEntryPoint>, è necessario registrare manualmente le estensioni nel Main metodo. Ogni pagina di estensione documenta la chiamata di registrazione manuale.

Nota

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

Vedere anche