Condividi tramite


Configurazione di MSTest SDK

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 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 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 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 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:

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 ✔️
Hot Reload ✔️
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 Funzionalità 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 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 project di test MSTest esistente a MSTest SDK, iniziare sostituendo la voce Sdk="Microsoft.NET.Sdk" nella parte superiore del project 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 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 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'

Limitazioni note

Gli SDK MSBuild forniti da NuGet (incluso MSTest.Sdk) hanno supporto limitato degli strumenti quando si tratta di aggiornare la versione, cioè il normale aggiornamento di 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