Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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 wurde dafür konzipiert, eine erstklassige Erfahrung für Tests mit MSTest zu bieten.
- Es ist das empfohlene Ziel für die meisten Benutzer.
- Einfach zu konfigurieren für andere Benutzer
Standardmäßig ermittelt und führt das MSTest SDK Ihre Tests mithilfe der MSTest runner für Microsoft.Testing.Platform aus. Sie können zur Verwendung von VSTest wechseln, indem Sie folgendes angeben: <UseVSTest>true</UseVSTest>
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.10.2">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
</PropertyGroup>
</Project>
Hinweis
/3.10.2 wird als Beispiel angegeben und kann durch jede neuere Version ersetzt werden.
Um die Behandlung von Versionen zu vereinfachen, wird empfohlen, die SDK-Version mithilfe der Datei global.json auf der Lösungsebene festzulegen. Ihre Projektdatei würde z. B. wie folgt aussehen:
<Project Sdk="MSTest.Sdk">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
</PropertyGroup>
</Project>
Geben Sie dann die MSTest.Sdk-Version in der Datei global.json wie folgt an:
{
"msbuild-sdks": {
"MSTest.Sdk": "3.10.2"
}
}
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.
Wichtig
Durch das Wechseln zu MSTest.Sdk entscheiden Sie sich für die Nutzung des MSTest Runners (aktiviert Microsoft.Testing.Platform für MSTest), einschließlich der Verwendung von dotnet test. Dies erfordert, dass Sie Ihre CI (Continuous Integration)- und lokalen CLI-Aufrufe (Command Line Interface, Befehlszeilenschnittelle) ändern, und wirkt sich auch auf die verfügbaren Einträge der .runsettings aus. Sie können MSTest.Sdk verwenden und weiterhin die alten Integrationen und Tools beibehalten, indem Sie stattdessen den Runner wechseln.
Standardmäßig setzt MSTest.Sdk EnableMSTestRunner und TestingPlatformDotnetTestSupport auf "true". Weitere Informationen zum Dotnet-Test und den verschiedenen Modi für die Ausführung von Microsoft.Testing.Platform 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:
None– Es sind keine Erweiterungen aktiviert.Default– Aktiviert die empfohlenen Erweiterungen für diese Version von MSTest.SDK. Dies ist die Standardeinstellung, wenn die Eigenschaft nicht explizit festgelegt wird.Aktiviert die folgenden Erweiterungen:
AllMicrosoft– Aktiviert alle von Microsoft bereitgestellten Erweiterungen (einschließlich der Erweiterungen mit einer restriktiven Lizenz).Aktiviert die folgenden Erweiterungen:
- Codeabdeckung
- Absturzabbild
- Fakes (MSTest.Sdk 3.7.0+)
- Hang-Dump
- Neuladen im laufenden Betrieb
- Wiederholen.
- Trx-Bericht
- AzureDevOpsReport
Hier ist ein vollständiges Beispiel für die Verwendung des None-Profils:
<Project Sdk="MSTest.Sdk/3.10.2">
<PropertyGroup>
<TargetFramework>net8.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/3.10.2">
<PropertyGroup>
<TargetFramework>net8.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/3.10.2">
<PropertyGroup>
<TargetFramework>net8.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/3.4.0">
<PropertyGroup>
<TargetFramework>net8.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/3.4.0">
<PropertyGroup>
<TargetFramework>net8.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": "3.10.2"
}
}
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.)