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. Grundlegendes Setup und den Einstieg finden Sie unter Einführung in 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, eine Hilfsbibliothek für Tests ist und selbst keine ausführbaren Tests enthält, sollte das Projekt <IsTestApplication>false</IsTestApplication> enthalten.
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 dem Konzept von profiles können Sie die Standardkonfigurationen und Erweiterungen auswählen, die auf Ihre Test-project 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
- Hot Reload
- 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 | ✔️ | ||
| Hot Reload | ✔️ | ||
| 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-Features.
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 Sie Ihr Projekt
Wenn Sie ein vorhandenes MSTest-Test-project zu MSTest SDK migrieren, ersetzen Sie zunächst den Eintrag Sdk="Microsoft.NET.Sdk" oben im Test project 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 Ihrer project 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 ein Beispielupdate, 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) haben limited tooling support wenn es um das Aktualisieren ihrer Version geht, was bedeutet, dass das übliche NuGet-Update und Visual Studio UI für die Verwaltung von NuGet-Paketen nicht wie erwartet funktionieren. Sie müssen die Version in der Datei global.json und in der Projektdatei manuell aktualisieren. (Dies gilt auch, wenn Sie Dependabot aufgrund von Problemen dependabot-core#12824 und dependabot-core#8615 verwenden.)