Freigeben über


MSTest SDK-Konfiguration

In diesem Artikel werden erweiterte Konfigurationsoptionen für MSTest.Sdk behandelt. Grundlegende Einrichtung und erste Schritte finden Sie unter "Erste Schritte mit MSTest".

Wichtig

Standardmäßig verwendet MSTest.Sdk den MSTest runner mit Microsoft.Testing.Platform, einschließlich dotnet test. Dies erfordert das Ändern Ihrer CI- und lokalen CLI-Aufrufe und wirkt sich auch auf die verfügbaren Einträge der .runsettings aus. Sie können die alten Integrationen und Tools beibehalten, indem Sie zu VSTest wechseln.

MSTest.Sdk setzt EnableMSTestRunner und TestingPlatformDotnetTestSupport standardmäßig auf "true". Weitere Informationen zum Dotnet-Test und den verschiedenen Modi finden Sie unter "Testen mit dotnet"-Test.

Testen von Hilfsprogrammbibliotheken

Wenn das Projekt, das MSTest.Sdk verwendet, als Hilfsprogrammbibliothek für Testprogramme vorgesehen ist und selbst keine runnablen Tests enthält, sollte das Projekt verfügen <IsTestApplication>false</IsTestApplication>.

Läufer auswählen

Standardmäßig basiert MSTest SDK auf Microsoft.Testing.Platform, Sie können jedoch zu VSTest wechseln, indem Sie die Eigenschaft <UseVSTest>true</UseVSTest>hinzufügen.

Microsoft.Testing.Platform erweitern

Sie können die Microsoft.Testing.Platform-Oberfläche über eine Reihe von NuGet-Paketerweiterungen anpassen. Um diese Erfahrung zu vereinfachen und zu verbessern, führt das MSTest SDK zwei Features ein:

Microsoft.Testing.Platform-Profil

Mit Profilen können Sie die Standardkonfigurationen und -erweiterungen auswählen, die auf Ihr Testprojekt angewendet werden.

Sie können das Profil mithilfe der Eigenschaft TestingExtensionsProfile auf eines der folgenden drei Profile festlegen:

Hier ist ein vollständiges Beispiel für die Verwendung des None-Profils:

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

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

</Project>
Erweiterung/profil Nichts Standard AllMicrosoft
Codeabdeckung ✔️ ✔️
Absturzabbild ✔️
Fälschungen ✔️¹
Hang-Dump ✔️
Neuladen im laufenden Betrieb ✔️
Wiederholen. ✔️
Trx ✔️ ✔️
AzureDevOpsReport ✔️²

¹ MSTest.Sdk 3.7.0+ ² MSTest.Sdk 3.11.0+

Aktivieren oder Deaktivieren von Erweiterungen

Erweiterungen können durch MSBuild-Eigenschaften mit dem Muster Enable[NugetPackageNameWithoutDots] aktiviert und deaktiviert werden.

Verwenden Sie beispielsweise die folgende auf festgelegte Eigenschaft EnableMicrosoftTestingExtensionsCrashDump, um die Absturzabbilderweiterung (NuGet-Paket true) zu aktivieren:

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

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

</Project>

Eine Liste aller verfügbaren Erweiterungen finden Sie unter Microsoft.Testing.Platform-Erweiterungen.

Warnung

Überprüfen Sie unbedingt die Lizenzbedingungen für jede Erweiterung, da diese variieren können.

Aktivierte und deaktivierte Erweiterungen werden mit den Erweiterungen kombiniert, die von Ihrem ausgewählten Erweiterungsprofil bereitgestellt werden.

Dieses Eigenschaftsmuster kann verwendet werden, um zusätzlich zum impliziten Default-Profil eine zusätzliche Erweiterung zu aktivieren (wie im vorherigen CrashDumpExtension-Beispiel gezeigt).

Sie können Erweiterungen aus dem ausgewählten Profil auch deaktivieren. Deaktivieren Sie z. B. die MS Code Coverage-Erweiterung, indem Sie <EnableMicrosoftTestingExtensionsCodeCoverage>false</EnableMicrosoftTestingExtensionsCodeCoverage> festlegen:

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

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

</Project>

Funktionen

Neben der Auswahl des Runners und der läuferspezifischen Erweiterungen bietet MSTest.Sdk zusätzliche Funktionen, um Ihre Testerfahrung zu vereinfachen und zu verbessern.

Test mit Aspire

Aspire ist ein meinungsfähiger, cloudfähiger Stapel zum Erstellen von feststellbaren, produktionsbereiten, verteilten Anwendungen. Aspire wird über eine Sammlung von NuGet-Paketen geliefert, die spezifische Cloud-native Herausforderungen lösen. Weitere Informationen finden Sie in den Aspire-Dokumenten.

Hinweis

Dieses Feature ist über MSTest.Sdk 3.4.0 verfügbar.

Indem Sie die EnableAspireTesting-Eigenschaft auf true festlegen, können Sie alle Abhängigkeiten und using-Standardanweisungen, die Sie zum Testen mit Aspire und MSTest benötigen, bereitstellen.

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

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

</Project>

Testen mit Playwright

Playwright ermöglicht zuverlässige End-to-End-Tests für moderne Web-Apps. Weitere Informationen finden Sie in der offiziellen Playwright-Dokumentation.

Hinweis

Dieses Feature ist über MSTest.Sdk 3.4.0 verfügbar.

Indem Sie die EnablePlaywright-Eigenschaft auf true festlegen, können Sie alle Abhängigkeiten und using-Standardanweisungen, die Sie zum Testen mit Playwright und MSTest benötigen, bereitstellen.

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

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

</Project>

Migrieren zum MSTest SDK

Beachten Sie die folgenden Schritte, die zum Migrieren zum MSTest-SDK erforderlich sind.

Aktualisieren des Projekts

Wenn Sie ein vorhandenes MSTest-Testprojekt zu MSTest SDK migrieren, ersetzen Sie zunächst den Sdk="Microsoft.NET.Sdk"-Eintrag oben im Testprojekt durch Sdk="MSTest.Sdk"

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

Fügen Sie die Version zu global.json hinzu:

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

Sie können dann mit der Vereinfachung Ihres Projekts beginnen.

Entfernen Sie Standardeigenschaften:

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

Entfernen Sie Standardpaketverweise:

- <PackageReference Include="MSTest"
- <PackageReference Include="MSTest.TestFramework"
- <PackageReference Include="MSTest.TestAdapter"
- <PackageReference Include="MSTest.Analyzers"
- <PackageReference Include="Microsoft.NET.Test.Sdk"

Schließlich können Sie basierend auf dem verwendeten Erweiterungsprofil auch einige der Microsoft.Testing.Extensions.*-Pakete entfernen.

Aktualisieren Ihrer CI

Nachdem Sie Ihre Projekte aktualisiert haben, müssen Sie Ihre CI-Konfiguration aktualisieren, sofern Sie Microsoft.Testing.Platform (Standard) verwenden und dotnet test zum Ausführen Ihrer Tests benötigen. Weitere Informationen und Hinweise zum Verständnis aller erforderlichen Änderungen finden Sie unter Integration von „dotnet test”.

Wenn Sie den VSTest-Modus von dotnet test verwenden, finden Sie hier eine Beispiel-Aktualisierung, wenn Sie die Aufgabe DotNetCoreCLI in Azure DevOps verwenden:

\- task: DotNetCoreCLI@2
  inputs:
    command: 'test'
    projects: '**/**.sln'
-    arguments: '--configuration Release'
+    arguments: '--configuration Release -- --report-trx --results-directory $(Agent.TempDirectory) --coverage'

Bekannte Einschränkungen

Die von NuGet bereitgestellten MSBuild-SDKs (einschließlich MSTest.Sdk) verfügen über eingeschränkte Toolunterstützung beim Aktualisieren ihrer Version, was bedeutet, dass das übliche NuGet-Update und die Visual Studio-Benutzeroberfläche für die Verwaltung von NuGet-Paketen nicht wie erwartet funktionieren. Sie müssen die Version in der global.json Datei und in der Projektdatei manuell aktualisieren. (Dies gilt auch, wenn Sie Dependabot wegen der Probleme "dependabot-core#12824" und "dependabot-core#8615" verwenden.)

Siehe auch