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.Sdk è un SDK per progetti MSBuild per la compilazione di app MSTest . È possibile compilare un'app MSTest senza questo SDK, ma MSTest SDK è:
- Personalizzato per fornire un'esperienza di prim'ordine per i test con MSTest.
- Destinazione consigliata per la maggior parte degli utenti.
- Facile da configurare per gli altri utenti.
Per impostazione predefinita, MSTest SDK individua ed esegue i test usando MSTest Runner per Microsoft.Testing.Platform. È possibile passare all'uso di VSTest specificando <UseVSTest>true</UseVSTest>
È possibile abilitare MSTest.Sdk in un progetto semplicemente aggiornando l'attributo Sdk del nodo Project del progetto:
<Project Sdk="MSTest.Sdk/3.10.2">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
</PropertyGroup>
</Project>
Nota
/3.10.2 viene fornito come esempio e può essere sostituito con qualsiasi versione più recente.
Per semplificare la gestione delle versioni, è consigliabile impostare la versione dell'SDK a livello di soluzione utilizzando il file global.json. Ad esempio, il file di progetto sarà simile al seguente:
<Project Sdk="MSTest.Sdk">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
</PropertyGroup>
</Project>
Specificare la versione MSTest.Sdk nel file global.json nel modo seguente:
{
"msbuild-sdks": {
"MSTest.Sdk": "3.10.2"
}
}
Per altre informazioni, vedere Usare gli SDK del progetto MSBuild.
Quando si build il progetto, tutti i componenti necessari vengono ripristinati e installati usando il flusso di lavoro standard di NuGet impostato per il progetto.
Non è necessario altro per compilare ed eseguire i test ed è possibile usare gli stessi strumenti (ad esempio dotnet test o Visual Studio) usati da un progetto MSTest "classico".
Importante
Passando a MSTest.Sdk, si acconsente esplicitamente all'uso dello strumento di esecuzione MSTest (abilita Microsoft.Testing.Platform per MSTest), incluso il test dotnet. Questo implica la modifica delle chiamate CI e dell'interfaccia della riga di comando locale e influisce anche sulle voci disponibili del file .runsettings. È possibile usare MSTest.Sdk e mantenere le vecchie integrazioni e gli strumenti passando al runner.
Per impostazione predefinita, MSTest.Sdk imposta EnableMSTestRunner e TestingPlatformDotnetTestSupport su true. Per altre informazioni sul test dotnet e sulle diverse modalità per l'esecuzione di Microsoft.Testing.Platform, vedere Test con dotnet test.
Biblioteche di supporto per utility di test
Se il progetto che usa MSTest.Sdk deve essere una libreria helper dell'utilità di test e non contiene per sé test eseguibili, il progetto deve avere <IsTestApplication>false</IsTestApplication>.
Seleziona il corridore
Per impostazione predefinita, MSTest SDK si basa su Microsoft.Testing.Platform, ma è possibile passare a VSTest aggiungendo la proprietà <UseVSTest>true</UseVSTest>.
Estendere Microsoft.Testing.Platform
È possibile personalizzare l'esperienza di Microsoft.Testing.Platform tramite un set di estensioni del pacchetto NuGet. Per semplificare e migliorare questa esperienza, MSTest SDK introduce due funzionalità:
Profilo della Piattaforma di Microsoft.Testing
Il profilo consente di selezionare il set predefinito di configurazioni ed estensioni che verranno applicate al progetto 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- Abilita 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/3.10.2">
<PropertyGroup>
<TargetFramework>net8.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 del file di dump di arresto anomalo (pacchetto NuGet Microsoft.Testing.Extensions.CrashDump), è possibile usare la proprietà EnableMicrosoftTestingExtensionsCrashDump seguente impostata su true:
<Project Sdk="MSTest.Sdk/3.10.2">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<EnableMicrosoftTestingExtensionsCrashDump>true</EnableMicrosoftTestingExtensionsCrashDump>
</PropertyGroup>
</Project>
Per un elenco di tutte le estensioni disponibili, vedere Estensioni di Microsoft.Testing.Platform.
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/3.10.2">
<PropertyGroup>
<TargetFramework>net8.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 preconfigurato e pronto per il cloud per la creazione di applicazioni distribuibili, osservabili e pronte per la produzione. Aspire è distribuito tramite una raccolta di pacchetti NuGet che gestiscono problematiche specifiche inerenti al cloud-native. Per ulteriori informazioni, vedere la documentazione di Aspire.
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/3.4.0">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<EnableAspireTesting>true</EnableAspireTesting>
</PropertyGroup>
</Project>
Esegui test con Playwright
Playwright consente di eseguire test end-to-end affidabili per le app 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/3.4.0">
<PropertyGroup>
<TargetFramework>net8.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.
Aggiornamento del progetto
Quando si esegue la migrazione di un progetto di test MSTest esistente a MSTest SDK, iniziare sostituendo la voce Sdk="Microsoft.NET.Sdk" all'inizio 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": "3.10.2"
}
}
È quindi possibile iniziare a semplificare il progetto.
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 sta utilizzando Microsoft.Testing.Platform (impostazione predefinita) e se ci si basa su 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 utilizza la modalità VSTest di dotnet test, ecco un esempio di aggiornamento quando si utilizza 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'
Limitazioni note
Gli SDK MSBuild forniti da NuGet (incluso MSTest.Sdk) hanno un supporto limitato per gli strumenti quando si tratta di aggiornare la versione, ovvero il consueto aggiornamento NuGet e l'interfaccia utente di Visual Studio per la gestione dei pacchetti NuGet non funziona come previsto. Sarà necessario aggiornare manualmente la versione nel global.json file e nel file di progetto. Questo vale anche se si usa Dependabot a causa di problemi dependabot-core#12824 e dependabot-core#8615.