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.
Suggerimento
Prima di scegliere una configurazione dello strumento di esecuzione, vedere Panoramica delle piattaforme di test.
Esistono diversi modi per eseguire test MSTest a seconda delle esigenze. È possibile eseguire test da un IDE (ad esempio, Visual Studio, codice Visual Studio o JetBrains Rider) o dalla riga di comando o da un servizio ci (ad esempio, GitHub Actions o Azure DevOps).
In passato, MSTest si basava su VSTest per l'esecuzione di test in tutti i contesti, ma a partire dalla versione 3.2.0, MSTest ha il proprio test runner. Questo nuovo esecutore è più leggero e più veloce di VSTest ed è il metodo consigliato per eseguire test con MSTest.
VSTest e MTP
MSTest supporta l'esecuzione di test con VSTest e Microsoft.Testing.Platform (MTP). Il supporto per MTP è alimentato dal runner MSTest, che può eseguire test in tutti i contesti, come ad esempio le pipeline di integrazione continua (CI), l'interfaccia della riga di comando, l'Esplora test di Visual Studio e l'Esplora testo di VS Code. Lo strumento di esecuzione MSTest è incorporato direttamente nei progetti di test MSTest e non sono necessarie altre dipendenze dell'app, ad esempio vstest.console o dotnet test, per eseguire i test. Tuttavia, è comunque possibile eseguire i test usando dotnet test.
MsTest runner è open source e si basa sulla libreria MTP. È possibile trovare Microsoft.Testing.Platform codice nel repository microsoft/testfx GitHub. Lo strumento di esecuzione MSTest viene fornito in bundle con MSTest in 3.2.0 o versione successiva.
Con l'SDK di .NET 10 e versioni successive, selezionare la modalità MTP dedicata di dotnet test in global.json. A partire da .NET 11, è possibile eseguire l'override della selezione per il processo corrente con la DOTNET_TEST_RUNNER variabile di ambiente. Per gli input supportati, i requisiti della versione dell'SDK e le opzioni specifiche di MTP, vedere dotnet test con MTP.
Individuazione ed esecuzione programmatica dei test
Per un'interfaccia utente di test personalizzata, un servizio di test di integrazione o un generatore di report, scegliere l'interfaccia corrispondente alla piattaforma di test:
| Requirement | Interface | Details |
|---|---|---|
| Individua ed esegui test MTP dal codice .NET, con metadati e risultati in tempo reale. | Client in modalità server MTP | A partire da MTP 2.4, Microsoft.Testing.Platform.ServerMode.Client.Sources fornisce metodi tipizzati di individuazione ed esecuzione. Il pacchetto inietta tipi C# interni; altri linguaggi .NET possono chiamare un wrapper C#. |
| Individua i test MTP tramite un processo da riga di comando e utilizza metadati strutturati. | --list-tests json |
Disponibile in MTP 2.3 o versione successiva. Leggere il documento JSON, quindi eseguire test selezionati con --filter-uid. Il formato del testo non è un'API leggibile dal computer. |
| Mantenere un'integrazione di individuazione ed esecuzione VSTest esistente. | Microsoft.TestPlatform.TranslationLayer |
Usare VsTestConsoleWrapper con vstest.console e un adattatore VSTest compatibile. Il wrapper parla il protocollo VSTest, non il protocollo MTP nativo. |
| Acquisire i metadati di test o produrre report personalizzati all'interno del processo di test. | Estensioni MTP | Implementare un IDataConsumer oggetto per consumare i messaggi pubblicati da un framework di test. Questo punto di estensione non è un'API per client di test esterno. |
MTP supporta l'individuazione e l'esecuzione. Non è necessario analizzare l'output del terminale o creare un wrapper Process.Start per usare il suo client tipizzato in modalità server. Per un esempio C# completo e un chiamante Visual Basic, vedere Individuare ed eseguire test da .NET.
L'individuazione può includere categorie MSTest e metadati personalizzati TestProperty . I campi disponibili dipendono dal framework e dal trasporto; nessuna delle due API serializza ogni proprietà arbitraria in memoria. Vedere Consumare aggiornamenti e metadati.
Per un'integrazione esistente VsTestConsoleWrapper , mantenere una configurazione e un adattatore compatibili con VSTest fino a quando non si esegue la migrazione del client. La compatibilità VSTest di un framework non rende il livello di traduzione VSTest un client per ogni applicazione di test MTP. Per l'ambito del livello di compatibilità, vedere VSTest Bridge.
Abilitare MTP in un progetto MSTest
Usare MSTest SDK per semplificare notevolmente la configurazione del progetto, la gestione delle versioni e l'allineamento di MTP e delle relative estensioni.
MSTest.Sdk sostituisce Microsoft.NET.Sdk come SDK del progetto e MTP è abilitato per impostazione predefinita:
<Project Sdk="MSTest.Sdk/4.1.0">
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>
Note
MSTest.Sdk funziona solo quando il progetto può usare Microsoft.NET.Sdk come SDK di base. Se il project richiede un SDK diverso, non sostituire il <Project Sdk="..."> valore con MSTest.Sdk.
Ad esempio, alcuni progetti di test di integrazione ASP.NET Core usano Microsoft.NET.Sdk.Web.
MSTest.Sdk deriva da Microsoft.NET.Sdk, quindi non importa i target dell'SDK ASP.NET Core forniti da Microsoft.NET.Sdk.Web.
È anche possibile configurare MSTest manualmente anziché usare MSTest.Sdk. La configurazione manuale è necessaria quando il progetto richiede un SDK di primo livello diverso , ad esempio Microsoft.NET.Sdk.Web, ma è anche possibile sceglierlo con lo standard Microsoft.NET.Sdk. Aggiungere la proprietà EnableMSTestRunner e impostare OutputType su Exe nel file di progetto. Aggiungere quindi i riferimenti MSTest richiesti dal progetto. Assicurarsi di usare MSTest 3.2.0 o versione successiva e di eseguire l'aggiornamento alla versione più recente di MSTest disponibile.
Si consideri il seguente file di progetto come esempio:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<!-- Enable Microsoft.Testing.Platform, this is an opt-in feature -->
<EnableMSTestRunner>true</EnableMSTestRunner>
<TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport>
<!--
Displays error on console in addition to the log file. Note that this feature comes with a performance impact.
For more information, visit https://learn.microsoft.com/dotnet/core/testing/unit-testing-with-dotnet-test#show-failure-per-test
-->
<TestingPlatformShowTestsFailure>true</TestingPlatformShowTestsFailure>
<OutputType>Exe</OutputType>
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<!--
MSTest meta package is the recommended way to reference MSTest.
It's equivalent to referencing:
Microsoft.NET.Test.Sdk
MSTest.TestAdapter
MSTest.TestFramework
MSTest.Analyzers
Starting with 3.8, it also includes:
Microsoft.Testing.Extensions.TrxReport
Microsoft.Testing.Extensions.CodeCoverage
-->
<PackageReference Include="MSTest" Version="4.1.0" />
</ItemGroup>
</Project>
Suggerimento
Per assicurarsi che tutti i progetti di test nella soluzione usino lo strumento di esecuzione MSTest, impostare le proprietà EnableMSTestRunner e TestingPlatformDotnetTestSupport in Directory.Build.props anziché singoli file project.
Configurazioni e filtri
.runsettings
MTP supporta le impostazioni di esecuzione tramite l'opzione --settingsdella riga di comando . Per l'elenco completo delle voci MSTest supportate, vedere Configurare MSTest: Runsettings. I comandi seguenti mostrano vari esempi di utilizzo.
Utilizzo di dotnet run:
dotnet run --project Contoso.MyTests -- --settings config.runsettings
Utilizzo di dotnet exec:
dotnet exec Contoso.MyTests.dll --settings config.runsettings
oppure
dotnet Contoso.MyTests.dll --settings config.runsettings
Uso dell'eseguibile:
Contoso.MyTests.exe --settings config.runsettings
Filtro dei test
È possibile fornire il filtro dei test senza problemi usando l'opzione --filterdella riga di comando . I comandi seguenti mostrano alcuni esempi.
Utilizzo di dotnet run:
dotnet run --project Contoso.MyTests -- --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"
Utilizzo di dotnet exec:
dotnet exec Contoso.MyTests.dll --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"
oppure
dotnet Contoso.MyTests.dll --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"
Uso dell'eseguibile:
Contoso.MyTests.exe --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"
Vedere anche
- Eseguire i test MSTest in Azure Pipelines
-
Test con
dotnet test -
dotnet testcon MTP -
dotnet testcon VSTest - Informazioni di riferimento sulle opzioni di MTP CLI
- Modalità server MTP
- Testa le app UWP e WinUI 3 con MSTest e MTP
- Testa le app desktop Windows con MSTest Automazione interfaccia utente
- Filtra i test
- Ordina i test unitari