Condividi tramite


Panoramica di MSTest

MSTest, Microsoft Testing Framework, è un framework di test completamente supportato, open source e multipiattaforma per le applicazioni .NET. Consente di scrivere ed eseguire test e fornisce suite di test con integrazione ai Test Explorer di Visual Studio e Visual Studio Code, alla CLI .NET e a molte pipeline di CI.

MSTest è ospitato in GitHub e funziona con tutte le destinazioni .NET supportate.

Funzionalità principali

MSTest offre funzionalità di test complete:

Piattaforme supportate

MSTest supporta un'ampia gamma di piattaforme .NET e framework di destinazione. La tabella seguente riepiloga il supporto della piattaforma e considerazioni speciali:

Platform Framework di destinazione Supporto per il multithreading Attributi speciali Note
.NET .NET 8+ Parallelizzazione completa Tutti gli attributi Consigliato per i nuovi progetti
.NET Framework 4.6.2+ Parallelizzazione completa Tutti gli attributi Supporto completo delle funzionalità
UWP UAP 10, .NET 9+ con UAP Thread dell'interfaccia utente UITestMethod Richiede impostazioni <UseUwp>true</UseUwp>; vedere l'esempio UWP
WinUI 3 .NET 8+ Thread dell'interfaccia utente UITestMethod Richiede Windows App SDK; Vedere l'esempio di WinUI
AOT nativo .NET 8+ Parallelizzazione completa Maggior parte degli attributi Set di funzionalità limitato; vedere Esempio di AOT nativo

Considerazioni specifiche della piattaforma

Test UWP

I test UWP vengono eseguiti nel contenitore di app UWP e richiedono il thread dell'interfaccia utente per molte operazioni:

[TestClass]
public class UwpTests
{
    [UITestMethod]
    public void TestUwpControl()
    {
        // Test runs on UI thread
        var button = new Button();
        Assert.IsNotNull(button);
    }
}

Per la configurazione della piattaforma UWP, vedi l'esempio BlankUwpNet9App.

Test di WinUI 3

I test winUI 3 richiedono anche l'accesso al thread dell'interfaccia utente per testare i componenti visivi:

[TestClass]
public class WinUITests
{
    [UITestMethod]
    public void TestWinUIControl()
    {
        // Test runs on UI thread
        var window = new MainWindow();
        Assert.IsNotNull(window);
    }
}

Per la configurazione di WinUI, vedere l'esempio BlankWinUINet9App e l'esempio MSTestRunnerWinUI.

AOT nativo

La compilazione AOT nativa è supportata con alcune limitazioni dovute a funzionalità di reflection ridotte. Usare i generatori di origine dove possibile e testare gli scenari AOT con l'esempio NativeAotRunner.

Supporto del threading STA

Per gli scenari di interoperabilità COM di Windows, MSTest fornisce gli attributi STATestClass e STATestMethod per l'esecuzione di test in un apartment a thread singolo. Per informazioni dettagliate sul threading STA, incluso il supporto della continuazione asincrona con UseSTASynchronizationContext, vedere Attributi di threading.

Strumenti di esecuzione dei test

MSTest supporta due piattaforme di esecuzione di test:

  • Microsoft.Testing.Platform (MTP): piattaforma di test moderna e consigliata con prestazioni ed estendibilità migliorate.
  • VSTest: piattaforma di test originale e predefinita per .NET.

Per i nuovi progetti, è consigliabile usare Microsoft.Testing.Platform (MTP) con MSTest.Sdk.

Criteri di supporto di MSTest

A partire dalla versione 3.0.0, MSTest segue rigorosamente il controllo delle versioni semantiche.

Il team MSTest supporta solo la versione rilasciata più recente e incoraggia vivamente gli utenti a eseguire sempre l'aggiornamento alla versione più recente per trarre vantaggio dai miglioramenti e dalle patch di sicurezza. Le versioni di anteprima non sono supportate da Microsoft, ma sono disponibili per i test pubblici prima della versione finale.

Cronologia delle versioni

MSTest ha subito un'evoluzione significativa nelle versioni principali:

  • MSTest v1: framework di test di Visual Studio originale
  • MSTest v2: prima versione open source con supporto multipiattaforma
  • MSTest v3: Riscrittura moderna con architettura e funzionalità migliorate
  • MSTest v4: versione corrente con funzionalità avanzate

Per informazioni dettagliate su tutte le versioni, vedere il changelog MSTest.

Se si esegue l'aggiornamento da una versione precedente, vedere le guide alla migrazione:

Modifiche radicali

Il team MSTest esamina attentamente e riduce al minimo le modifiche che interrompono il funzionamento. Quando sono necessarie modifiche importanti, il team usa annunci GitHub e etichette per modifiche importanti sui problemi per informare la community in anticipo, offrendo agli utenti il tempo necessario per fornire commenti e suggerimenti e esprimere preoccupazioni prima del rilascio delle modifiche.

Passaggi successivi