Condividi tramite


Configurazione di MSTest SDK

Questo articolo illustra le opzioni di configurazione avanzate per MSTest.Sdk. Per la configurazione di base e l'introduzione, vedere Introduzione a MSTest.

Importante

Per impostazione predefinita, MSTest.Sdk usa il MSTest runner con Microsoft.Testing.Platform, 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 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:

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 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/4.1.0">

<PropertyGroup>
    <TargetFramework>net10.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/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 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/4.1.0">

    <PropertyGroup>
        <TargetFramework>net10.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/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.

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": "4.1.0"
    }
}

È 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.

Vedi anche