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.
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:
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/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.)