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.
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:
-
Test basati sui dati: eseguire test con più input usando
DataRow,DynamicDatae origini dati esterne. - Gestione del ciclo di vita dei test: installazione e pulizia a livello di assembly, classe e test.
- Esecuzione parallela: eseguire i test contemporaneamente per ridurre il tempo di esecuzione.
- Organizzazione di test: classificare, classificare in ordine di priorità e filtrare i test con attributi di metadati.
- Analizzatori di codice: rilevare i problemi comuni e applicare le procedure consigliate in fase di compilazione.
- Asserzioni: metodi di asserzione completi per la convalida dei risultati.
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 |
| framework .NET | 4.6.2+ | Parallelizzazione completa | Tutti gli attributi | Supporto completo delle funzionalità |
| UWP | UAP 10, .NET 9+ con UAP | Thread dell'interfaccia utente | UITestMethod |
Usare VSTest. Modern .NET UWP richiede <UseUwp>true</UseUwp>; vedi l'esempio UWP |
| WinUI 3 | .NET 8+ | Thread dell'interfaccia utente | UITestMethod |
Richiede SDK per app di Windows; vedere Testare le app WinUI 3 con MSTest e MTP |
| AOT nativo | .NET 8+ | Parallelizzazione completa | Maggior parte degli attributi | Set di funzionalità limitato; vedere Esempio di AOT nativo |
| Browser WebAssembly | .NET 10+ host personalizzato | Thread singolo | Limited | Microsoft personalizzate. Il supporto host Testing.Platform inizia con MSTest 4.4 |
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);
}
}
Usa VSTest per la piattaforma UWP classica e la piattaforma UWP moderna .NET perché entrambi vengono eseguiti in un AppContainer. Per una configurazione moderna .NET 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 configurare test WinUI 3 senza pacchetti o senza pacchetti, vedere Testare le app WinUI 3 con MSTest e MTP.
A partire da MSTest 4.4, Microsoft. Testing.Platform supporta anche applicazioni di test WinUI senza pacchetti. VSTest non supporta questo scenario. Per informazioni dettagliate sull'installazione, vedi l'esempio di WinUI non in pacchetto.
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.
Browser WebAssembly
A partire da MSTest 4.4, un host WebAssembly del browser personalizzato .NET 10 può chiamare AddMSTest per eseguire test da un assembly MSTest di riferimento. Nel progetto host impostare su EnableMSTestRunnertrue e GenerateTestingPlatformEntryPoint su false in modo che l'host personalizzato sia proprietario del punto di ingresso dell'applicazione. Mantenere MSTest e Microsoft. Versioni del pacchetto Testing.Platform allineate.
In un runtime WebAssembly a thread singolo, MSTest non può interrompere i test di timeout e le opzioni di avvio del debugger non sono supportate. Per un host completo, vedi l'esempio BrowserPlayground.
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 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
Note
MSTest 4.4 è in fase di sviluppo a partire da agosto 2026. Le funzionalità contrassegnate come introdotte in MSTest 4.4 richiedono una build di anteprima fino al rilascio della versione 4.4.0.
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.