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.
Questo articolo illustra le opzioni di configurazione avanzate per MSTest.Sdk. Per la configurazione di base e l'avvio, vedere Introduzione a MSTest.
Importante
Per impostazione predefinita, MSTest.Sdk usa lo strumento di esecuzione MSTest con MTP, incluso con dotnet test. Ciò richiede la modifica delle chiamate CI e della CLI locale, e influisce anche sugli elementi disponibili di .runsettings. È possibile mantenere le vecchie integrazioni e gli strumenti passando a VSTest.
MSTest.Sdk imposta EnableMSTestRunner e TestingPlatformDotnetTestSupport su true per impostazione predefinita. Per altre informazioni sul test dotnet e sulle relative diverse modalità, vedere Test con dotnet test.
Biblioteche di supporto per utility di test
Se il project che usa MSTest.Sdk deve essere una libreria helper dell'utilità di test e non contiene per sé test eseguibili, il project deve avere <IsTestApplication>false</IsTestApplication>.
Seleziona il corridore
Per impostazione predefinita, MSTest SDK si basa su MTP, ma è possibile passare a VSTest aggiungendo la proprietà <UseVSTest>true</UseVSTest>.
Estendere il protocollo MTP
È possibile personalizzare l'esperienza MTP tramite un set di estensioni del pacchetto NuGet. Per semplificare e migliorare questa esperienza, MSTest SDK introduce due funzionalità:
Microsoft.Testing.Platform profilo
Il concetto di profile consente di selezionare il set predefinito di configurazioni ed estensioni che verranno applicate al project di test.
È possibile impostare il profilo usando la proprietà TestingExtensionsProfile con uno dei tre profili seguenti:
None- Non viene abilitata alcuna estensione.Default- Abilita le estensioni consigliate per questa versione di MSTest.SDK. Si tratta dell'impostazione predefinita quando la proprietà non è impostata in modo esplicito.Abilita le estensioni seguenti:
AllMicrosoft: abilitare tutte le estensioni fornite da Microsoft (incluse le estensioni con una licenza restrittiva).Abilita le estensioni seguenti:
- Copertura del codice
- dump di arresto anomalo del sistema
- Fakes (MSTest.Sdk 3.7.0+)
- scarica sospesa
- Ricaricamento rapido
- riprovare
- Report Trx
- AzureDevOpsReport
Di seguito è riportato un esempio completo, usando il profilo None:
<Project Sdk="MSTest.Sdk/4.1.0">
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<TestingExtensionsProfile>None</TestingExtensionsProfile>
</PropertyGroup>
</Project>
| Estensione/Profilo | Nessuno | Predefinito | AllMicrosoft |
|---|---|---|---|
| Copertura del codice | ✔️ | ✔️ | |
| dump di arresto anomalo del sistema | ✔️ | ||
| Falsi | ✔️¹ | ||
| scarica sospesa | ✔️ | ||
| Ricaricamento rapido | ✔️ | ||
| riprovare | ✔️ | ||
| Trx | ✔️ | ✔️ | |
| AzureDevOpsReport | ✔️² |
¹ MSTest.Sdk 3.7.0+ ² MSTest.Sdk 3.11.0+
Abilitare o disabilitare le estensioni
Le estensioni possono essere abilitate e disabilitate dalle proprietà di MSBuild con il modello Enable[NugetPackageNameWithoutDots].
Ad esempio, per abilitare l'estensione crash dump (pacchetto NuGet Microsoft.Testing.Extensions.CrashDump), è possibile utilizzare la seguente proprietà EnableMicrosoftTestingExtensionsCrashDump impostata su true:
<Project Sdk="MSTest.Sdk/4.1.0">
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<EnableMicrosoftTestingExtensionsCrashDump>true</EnableMicrosoftTestingExtensionsCrashDump>
</PropertyGroup>
</Project>
Per un elenco di tutte le estensioni disponibili, vedere Funzionalità MTP.
Avviso
È importante rivedere le condizioni di licenza per ogni estensione in quanto potrebbero variare.
Le estensioni abilitate e disabilitate vengono combinate con le estensioni fornite dal profilo di estensione selezionato.
Questi criteri di proprietà possono essere utilizzati per abilitare un'estensione aggiuntiva sopra il profilo Default implicito (come illustrato nell'esempio CrashDumpExtension precedente).
È anche possibile disabilitare un'estensione proveniente dal profilo selezionato. Ad esempio, disabilitare l'estensione MS Code Coverage impostando <EnableMicrosoftTestingExtensionsCodeCoverage>false</EnableMicrosoftTestingExtensionsCodeCoverage>:
<Project Sdk="MSTest.Sdk/4.1.0">
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<EnableMicrosoftTestingExtensionsCodeCoverage>false</EnableMicrosoftTestingExtensionsCodeCoverage>
</PropertyGroup>
</Project>
Funzionalità
Oltre alla selezione del runner e delle relative estensioni specifiche, MSTest.Sdk offre anche funzionalità aggiuntive per semplificare e migliorare l'esperienza di testare.
Test con Aspire
Aspire è uno stack predefinito e pronto per il cloud per la creazione di applicazioni osservabili, pronte per la produzione e distribuite. Aspire viene distribuito tramite una raccolta di pacchetti NuGet che gestiscono problemi specifici nativi del cloud. Per altre informazioni, vedere la Aspire documentazione.
Nota
Questa funzionalità è disponibile in MSTest.Sdk 3.4.0.
Impostando la proprietà EnableAspireTesting su true, è possibile importare tutte le dipendenze e le direttive using predefinite necessarie per i test con Aspire e MSTest.
<Project Sdk="MSTest.Sdk/4.1.0">
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<EnableAspireTesting>true</EnableAspireTesting>
</PropertyGroup>
</Project>
Esegui test con Playwright
Playwright consente di effettuare test end-to-end affidabili per le applicazioni web moderne. Per altre informazioni, vedere la documentazione ufficiale Playwright.
Nota
Questa funzionalità è disponibile in MSTest.Sdk 3.4.0.
Impostando la proprietà EnablePlaywright su true, è possibile importare tutte le dipendenze e le direttive using predefinite necessarie per i test con Playwright e MSTest.
<Project Sdk="MSTest.Sdk/4.1.0">
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<EnablePlaywright>true</EnablePlaywright>
</PropertyGroup>
</Project>
Migrazione a MSTest SDK
Prendere in considerazione i passaggi seguenti necessari per eseguire la migrazione a MSTest SDK.
Aggiornare il project
Quando si esegue la migrazione di un progetto di test MSTest esistente a MSTest SDK, iniziare sostituendo la voce Sdk="Microsoft.NET.Sdk" nella parte superiore del progetto di test con Sdk="MSTest.Sdk"
- Sdk="Microsoft.NET.Sdk"
+ Sdk="MSTest.Sdk"
Aggiungi la versione al global.json:
{
"msbuild-sdks": {
"MSTest.Sdk": "4.1.0"
}
}
È quindi possibile iniziare a semplificare il project.
Rimuovere le proprietà predefinite:
- <EnableMSTestRunner>true</EnableMSTestRunner>
- <OutputType>Exe</OutputType>
- <IsPackable>false</IsPackable>
- <IsTestProject>true</IsTestProject>
Rimuovere i riferimenti ai pacchetti predefiniti:
- <PackageReference Include="MSTest"
- <PackageReference Include="MSTest.TestFramework"
- <PackageReference Include="MSTest.TestAdapter"
- <PackageReference Include="MSTest.Analyzers"
- <PackageReference Include="Microsoft.NET.Test.Sdk"
Infine, in base al profilo delle estensioni in uso, è anche possibile rimuovere alcuni dei pacchetti Microsoft.Testing.Extensions.*.
Aggiorna il tuo CI
Dopo aver aggiornato i progetti, se si usa MTP (impostazione predefinita) e se ci si affida dotnet test per eseguire i test, è necessario aggiornare la configurazione CI. Per ulteriori informazioni e per facilitare la comprensione di tutte le modifiche necessarie, consultare l'integrazione dei test di dotnet.
Se si usa la modalità VSTest di dotnet test, di seguito è riportato un esempio di aggiornamento quando si usa l'attività DotNetCoreCLI in Azure DevOps:
\- task: DotNetCoreCLI@2
inputs:
command: 'test'
projects: '**/**.sln'
- arguments: '--configuration Release'
+ arguments: '--configuration Release -- --report-trx --results-directory $(Agent.TempDirectory) --coverage'
Funzionalità sperimentali
Le funzionalità MSTest 4.3 seguenti sono sperimentali. Le loro API pubbliche sono soggette a modifiche e sono esposte tramite diagnostiche sperimentali, quindi per abilitarle è necessario riconoscere il corrispondente ID diagnostico. Usarli con quel avvertimento in mente.
Generatore di codice sorgente basato sulla riflessione
Nota
Introdotto in MSTest 4.3.0 (sperimentale).
Il generatore di codice sorgente basato sulla reflection di MSTest rileva i test in fase di compilazione invece di basarsi sulla reflection in fase di esecuzione, rendendo così i progetti di test compatibili con la riduzione e Native AOT. Abilitarlo aggiungendo il pacchetto MSTest.SourceGeneration . Quando il generatore di origine è attivo, le classi di test devono dichiarare [TestClass] direttamente anziché ereditarla. L'analizzatore MSTEST0069 contrassegna le classi che si basano su un oggetto ereditato [TestClass].
Filtro di test a livello di codice con ITestFilter
Nota
Introdotto in MSTest 4.3.0 (sperimentale).
Il punto di estensione sperimentale ITestFilter , registrato tramite [TestFilterProviderAttribute], consente di decidere a livello di codice se ogni test viene eseguito, prima del caricamento di qualsiasi classe di test. Ciò è utile per la logica di selezione personalizzata che non può essere espressa con i filtri della riga di comando.
TestRun.Current e test pianificati
Nota
Introdotto in MSTest 4.3.0 (sperimentale).
L'API sperimentale TestRun.Current (da RFC 014) espone informazioni sull'esecuzione corrente, incluso il set di test pianificati, in modo che le estensioni e le fixture possano controllare cosa è pianificato per l'esecuzione.
Limitazioni note
Gli SDK MSBuild forniti da NuGet (incluso MSTest.Sdk) hanno supporto limitato per gli strumenti quando si tratta di aggiornare la versione, il che significa che il consueto aggiornamento tramite NuGet e l'interfaccia utente di Visual Studio per la gestione dei pacchetti NuGet non funziona come previsto. È necessario aggiornare manualmente la versione nel file global.json e nel file project. Questo vale anche se si usa Dependabot a causa di problemi dependabot-core#12824 e dependabot-core#8615.
Vedi anche
- Proprietà relative a MTP
- proprietà correlate a VSTest