Condividi tramite


Panoramica di MSTest SDK

MSTest.Sdk è un SDK per progetti MSBuild per la compilazione di app MSTest. È possibile compilare un'app MSTest senza questo SDK, ma MSTest SDK è:

  • Su misura per offrire un'esperienza di livello assoluto per i test con MSTest
  • Destinazione consigliata per la maggior parte degli utenti.
  • Facile da configurare per gli altri utenti.

MSTest SDK rileva ed esegue i test usando lo strumento di esecuzione MSTest.

È possibile abilitare MSTest.Sdk in un progetto semplicemente aggiornando l'attributo Sdk del nodo Project del progetto:

<Project Sdk="MSTest.Sdk/3.3.1">

    <PropertyGroup>
        <TargetFramework>net8.0</TargetFramework>
    </PropertyGroup>

    <!-- references to the code to test -->

</Project>

Nota

/3.3.1 viene fornito come esempio poiché è la prima versione che fornisce SDK, ma può essere sostituita con qualsiasi versione più recente.

Per semplificare la gestione delle versioni, è consigliabile impostare la versione dell'SDK a livello di soluzione usando il global.json. Ad esempio, il file di progetto sarà simile al seguente:

<Project Sdk="MSTest.Sdk">

    <PropertyGroup>
        <TargetFramework>net8.0</TargetFramework>
    </PropertyGroup>

    <!-- references to the code to test -->

</Project>

Si avrà quindi un file global.json che specifica la versione MSTest.Sdk come indicato di seguito:

{
    "msbuild-sdks": {
        "MSTest.Sdk": "3.3.1"
    }
}

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 NuGet standard impostato dal 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".

Selezionare lo strumento di esecuzione

Per impostazione predefinita, MSTest SDK si basa sullo strumento di esecuzione MSTest, ma è possibile passare facilmente a VSTest aggiungendo la proprietà <UseVSTest>true</UseVSTest>.

Estendere lo strumento di esecuzione MSTest

È possibile personalizzare l'esperienza di MSTest runner tramite un set di estensioni del pacchetto NuGet. Per semplificare e migliorare questa esperienza, MSTest SDK introduce due funzionalità.

Profilo dello strumento di esecuzione MSTest

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:

  • Default - Abilita le estensioni consigliate per questa versione di MSTest.SDK. Si tratta dell'impostazione predefinita quando la proprietà non è impostata in modo esplicito.
  • None - Non viene abilitata alcuna estensione.
  • AllMicrosoft - Abilita tutte le estensioni fornite da Microsoft (incluse le estensioni con una licenza restrittiva).

Di seguito è riportato un esempio completo, usando il profilo None:

<Project Sdk="MSTest.Sdk/3.3.1">

    <PropertyGroup>
        <TargetFramework>net8.0</TargetFramework>
        <TestingExtensionsProfile>None</TestingExtensionsProfile>
    </PropertyGroup>

    <!-- references to the code to test -->

</Project>

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 di dump di arresto anomalo (pacchetto NuGet Microsoft.Testing.Extensions.CrashDump), usare la proprietà EnableMicrosoftTestingExtensionsCrashDump seguente impostata su true:

<Project Sdk="MSTest.Sdk/3.3.1">

<PropertyGroup>
    <TargetFramework>net8.0</TargetFramework>
    <EnableMicrosoftTestingExtensionsCrashDump>true</EnableMicrosoftTestingExtensionsCrashDump>
</PropertyGroup>

<!-- references to the code to test -->

</Project>

Questa pagina elenca tutte le estensioni disponibili.

Avviso

Esaminare le condizioni di licenza per ogni estensione in quanto possono variare.

Le estensioni abilitate e disabilitate vengono combinate con le estensioni fornite dal profilo di estensione selezionato.

Questa opzione può essere usata per abilitare un'estensione aggiuntiva oltre al profilo di Default implicito (come illustrato nell'esempio di CrashDumpExtension precedente).

Oppure per disabilitare un'estensione proveniente dal profilo selezionato. In questo caso, la disabilitazione dell'estensione MS Code Coverage impostando <EnableMicrosoftTestingExtensionsCodeCoverage>false</EnableMicrosoftTestingExtensionsCodeCoverage>:

<Project Sdk="MSTest.Sdk/3.3.1">

    <PropertyGroup>
        <TargetFramework>net8.0</TargetFramework>
        <EnableMicrosoftTestingExtensionsCodeCoverage>false</EnableMicrosoftTestingExtensionsCodeCoverage>
    </PropertyGroup>

    <!-- references to the code to test -->

</Project>

Funzionalità

Al di là della selezione dello strumento di esecuzione e delle estensioni specifiche per lo strumento di esecuzione, MSTest.Sdk fornisce anche funzionalità aggiuntive per semplificare e migliorare l'esperienza di test.

.NET Aspire

.NET Aspire è uno stack solido pronto per il cloud per la creazione di applicazioni distribuite osservabili, pronte per la produzione.​ .NET Aspire viene distribuito tramite una raccolta di pacchetti NuGet che gestiscono specifici problemi nativi del cloud. Per altre informazioni, vedere la documentazione .NET Aspire.

Nota

Questa funzionalità è disponibile in MSTest.Sdk 3.4.0

Impostando la proprietà EnableAspireTesting su true è possibile portare tutte le dipendenze e gli usi predefiniti necessari per il test con Aspire e MSTest.

<Project Sdk="MSTest.Sdk/3.4.0">

    <PropertyGroup>
        <TargetFramework>net8.0</TargetFramework>
        <EnableAspireTesting>true</EnableAspireTesting>
    </PropertyGroup>

    <!-- references to the code to test -->

</Project>

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 portare tutte le dipendenze e gli usi predefiniti necessari per il test con Playwright e MSTest.

<Project Sdk="MSTest.Sdk/3.4.0">

    <PropertyGroup>
        <TargetFramework>net8.0</TargetFramework>
        <EnablePlaywright>true</EnablePlaywright>
    </PropertyGroup>

    <!-- references to the code to test -->

</Project>

Migrazione a MSTest SDK

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

Sdk="MSTest.Sdk/3.3.1"

- Sdk="Microsoft.NET.Sdk"
+ Sdk="MSTest.Sdk"

Aggiungere la versione al global.json:

{
    "msbuild-sdks": {
        "MSTest.Sdk": "3.3.1"
    }
}

È quindi possibile iniziare a semplificare il progetto.

Rimozione delle proprietà predefinite:

- <EnableMSTestRunner>true</EnableMSTestRunner>
- <OutputType>Exe</OutputType>
- <IsPackable>false</IsPackable>
- <IsTestProject>true</IsTestProject>

Rimozione dei 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.*.