Freigeben über


Übersicht über das MSTest-SDK

MSTest.Sdk ist ein MSBuild-Projekt-SDK zum Erstellen von MSTest-Apps. Es ist möglich, eine MSTest-App ohne dieses SDK zu erstellen, für das MSTest SDK gilt jedoch Folgendes:

  • Es ist darauf ausgerichtet, ein erstklassiges Erlebnis für Tests mit MSTest zu bieten
  • Es ist das empfohlene Ziel für die meisten Benutzer.
  • Einfach zu konfigurieren für andere Benutzer

Das MSTest-SDK ermittelt Ihre Tests mithilfe des MSTest-Runners und führt sie aus.

Sie können MSTest.Sdk in einem Projekt aktivieren, indem Sie einfach das Sdk-Attribut des Project-Knotens Ihres Projekts aktualisieren:

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

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

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

</Project>

Hinweis

/3.3.1 wird als Beispiel angegeben, da es sich um die erste Version handelt, die das SDK bereitstellt, aber durch jede neuere Version ersetzt werden kann.

Um die Behandlung von Versionen zu vereinfachen, empfehlen wir, die SDK-Version auf Lösungsebene mithilfe der global.json festzulegen. Ihre Projektdatei würde z. B. wie folgt aussehen:

<Project Sdk="MSTest.Sdk">

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

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

</Project>

Anschließend hätten Sie eine global.json-Datei, die die MSTest.Sdk-Version wie folgt angibt:

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

Weitere Informationen finden Sie unter Verwenden von MSBuild-Projekt-SDKs.

Wenn Sie build für das Projekt ausführen, werden alle erforderlichen Komponenten wiederhergestellt und mithilfe des standardmäßigen NuGet-Workflows installiert, der von Ihrem Projekt festgelegt wurde.

Sie benötigen nichts anderes, um Ihre Tests zu erstellen und auszuführen, und Sie können dasselbe Tool (z. B. dotnet test oder Visual Studio) verwenden, das von einem klassischen MSTest-Projekt verwendet wird.

Auswählen des Runner

Standardmäßig basiert das MSTest-SDK auf dem MSTest-Runner. Sie können jedoch problemlos zu VSTest wechseln, indem Sie die Eigenschaft „<UseVSTest>true</UseVSTest>“ hinzufügen.

Erweitern von MSTest Runner

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

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

  • Default – Aktiviert die empfohlenen Erweiterungen für diese Version von MSTest.SDK. Dies ist die Standardeinstellung, wenn die Eigenschaft nicht explizit festgelegt wird.
  • None – Es sind keine Erweiterungen aktiviert.
  • AllMicrosoft – Aktiviert alle von Microsoft bereitgestellten Erweiterungen (einschließlich der Erweiterungen mit einer restriktiven Lizenz).

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

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

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

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

</Project>

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 true festgelegte Eigenschaft EnableMicrosoftTestingExtensionsCrashDump, um die Absturzabbilderweiterung (NuGet-Paket Microsoft.Testing.Extensions.CrashDump) zu aktivieren:

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

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

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

</Project>

Auf dieser Seite sind alle verfügbaren Erweiterungen aufgeführt.

Warnung

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

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

Dies kann verwendet werden, um eine weitere Erweiterung zusätzlich zu dem impliziten Default-Profil zu aktivieren (wie im vorherigen CrashDumpExtension-Beispiel dargestellt).

Oder um eine Erweiterung zu deaktivieren, die aus dem ausgewählten Profil stammt. Deaktivieren Sie in diesem Fall die MS Code Coverage-Erweiterung, indem Sie <EnableMicrosoftTestingExtensionsCodeCoverage>false</EnableMicrosoftTestingExtensionsCodeCoverage> festlegen:

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

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

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

</Project>

Features

Neben der Auswahl des Runners und der runner-spezifischen Erweiterungen bietet MSTest.Sdk zusätzliche Funktionen zur Vereinfachung und Verbesserung Ihrer Testerfahrung.

.NET Aspire

.NET Aspire ist ein meinungsfähiger, cloudfähiger Stapel zum Erstellen von beobachtbaren, produktionsbereiten, verteilten Anwendungen. .NET Aspire wird über eine Sammlung von NuGet-Paketen bereitgestellt, die bestimmte cloudnative Bedenken behandeln. Weitere Informationen finden Sie in der .NET Aspire-Dokumentation.

Hinweis

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

Indem Sie die Eigenschaft „EnableAspireTesting“ auf true festlegen, können Sie alle Abhängigkeiten und Standardeinstellungen verwenden, die Sie zum Testen mit Aspire und MSTest benötigen.

<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 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 unter MSTest.Sdk 3.4.0 verfügbar.

Indem Sie die Eigenschaft „EnablePlaywright“ auf true festlegen, können Sie alle Abhängigkeiten und Standardeinstellungen verwenden, die Sie zum Testen mit Playwright und MSTest benötigen.

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

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

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

</Project>

Migrieren zum MSTest SDK

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

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

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

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

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

Entfernen von Standardeigenschaften:

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

Entfernen von standardmäßigen Paketverweisen:

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