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.
Diese Erweiterungen schlagen eine Brücke zwischen Microsoft.Testing.Platform (MTP) und den Bibliotheken Microsoft.Extensions.*, die Ihre Anwendung bereits verwendet, sodass Plattform- und Erweiterungskomponenten über dieselbe Infrastruktur wie der Rest Ihres Codes geleitet werden. Jede Erweiterung erfordert ein zusätzliches NuGet-Paket, wie in jedem Abschnitt beschrieben.
Tipp
Bei Verwendung von Microsoft.Testing.Platform.MSBuild wird das Protokollierungspaket automatisch mit einem generierten Einstiegspunkt registriert. Das Konfigurationspaket erfordert eine IConfiguration Instanz, und das Hostingpaket erfordert entweder TestingPlatformHostFactory oder einen benutzerdefinierten Einstiegspunkt. Folgen Sie daher den Registrierungsabschnitten.
Logging-Schnittstelle
Die Protokollierungsbrücke leitet Microsoft.Testing.Platform-Diagnoseprotokolle an ILogger weiter, sodass Plattform- und Erweiterungsprotokolle dieselbe Microsoft.Extensions.Logging-Pipeline durchlaufen, die Ihre Anwendung bereits verwendet. Sie können einen vorhandenen Protokollierungsstapel – Konsole, Debug, Serilog, Application Insights, OpenTelemetry oder eine benutzerdefinierte ILoggerProvider – wiederverwenden, ohne einen benutzerdefinierten MTP-Loggeranbieter zu schreiben. Diese Erweiterung erfordert das Microsoft.Testing.Extensions.Logging-NuGet-Paket.
Note
Verfügbar in MTP ab Version 2.3.0. Diese Erweiterung ist experimentell, und die Optionen und das Ausgabeformat können sich in einer zukünftigen Version ändern.
Die Brücke leitet jede Nachricht nur weiter, wenn die Diagnoseprotokollierung der Plattform aktiviert ist. Wenn die effektive Protokollebene der Plattform lautet None (der Standardwert, es sei denn, Sie übergeben --diagnostic), wird der Konfigurationsdelegat nicht aufgerufen, und es wird keine Loggerfactory erstellt. Kategoriespezifische Filter, die Sie in der ILoggingBuilder festlegen, können die effektive Diagnoseebene der Plattform einschränken, sie aber nicht ausweiten.
Manuelle Registrierung
var builder = await TestApplication.CreateBuilderAsync(args);
builder.AddMicrosoftExtensionsLogging(logging => logging.AddConsole());
Konfigurationsmomentaufnahme
Das experimentelle Paket Microsoft.Testing.Extensions.Configuration fügt MTPs Konfigurationspipeline einen schreibgeschützten Snapshot eines anwendungseigenen IConfiguration hinzu.
Registrieren Sie die Konfiguration, bevor Sie die Testanwendung erstellen:
var builder = await TestApplication.CreateBuilderAsync(args);
builder.AddMicrosoftExtensionsConfigurationSnapshot(configuration);
Standardmäßig verwendet die Momentaufnahme reihenfolge 2. MTP-Befehlszeilenwerte (Reihenfolge 0) und Umgebungsvariablen (Reihenfolge 1) haben Vorrang, während die Momentaufnahme Vorrang vor testconfig.json (Reihenfolge 3) hat. Geben Sie eine andere Reihenfolge an, wenn Ihre Anwendung eine andere Priorität erfordert.
MTP liest den Snapshot, wenn BuildAsync die Konfigurationspipeline erstellt. Spätere Änderungen und erneutes Laden von Benachrichtigungen werden nicht weitergegeben. Der Aufrufer behält den Besitz der Konfiguration bei, hierarchische Schlüssel behalten das Standardtrennzeichen : bei, und die Registrierung gilt nur für den aktuellen Prozess. Ein Livekonfigurationsobjekt gelangt nicht in einen separat gestarteten Controller- oder Testhostprozess.
Host-Integration
Das experimentelle Microsoft.Testing.Extensions.Hosting-Paket führt MTP in einem der Anwendung gehörenden IHost aus. Der Host bleibt der Kompositionsstamm und besitzt seinen Dienstanbieter, seine Konfiguration, Protokollierung, OpenTelemetry-Anbieter, Lebensdauer und Entsorgung.
Legen Sie für einen generierten Einstiegspunkt TestingPlatformHostFactory auf eine vollqualifizierte statische Methode fest, die ein neu erstelltes, nicht gestartetes Task<IHost> zurückgibt:
<TestingPlatformHostFactory>Contoso.Tests.TestHost.CreateHost</TestingPlatformHostFactory>
Legen Sie TestingPlatformOpenTelemetryMode auf HostOwned fest, wenn der Host OpenTelemetry-Anbieter verwaltet und das Testprojekt auf Microsoft.Testing.Extensions.OpenTelemetry verweist. Der generierte Einstiegspunkt erstellt und entfernt den Host, behält selbst registrierte Erweiterungen bei und umgeht die Factory für Befehlszeile --help und --info.
Rufen Sie für einen benutzerdefinierten Einstiegspunkt RunTestingPlatformAsync auf dem Host auf, und registrieren Sie das Testframework über dessen Rückruffunktion. Die Methode importiert einen Konfigurationssnapshot, leitet MTP-Diagnosedaten an den ILoggerFactory des Hosts weiter, startet den Host vor MTP, verknüpft den Abbruch des Hosts und des Aufrufers mit MTP, gibt den MTP-Exitcode zurück und beendet den Host in einem finally-Block. Der Aufrufer entsorgt den Host weiterhin.
Halten Sie die Standardausgabe frei von Hoststart-, Herunterfahren-, Protokollierungs- und Exporternachrichten, da MTP sie für computerlesbare Modi wie --list-tests json, JSON-RPC Servermodus und das dotnet test Protokoll verwendet. Vermeiden Sie außerdem exklusive globale Ressourcen in einer Host-Factory, die mit Erweiterungen für den Prozessneustart verwendet wird, da Szenarien für Wiederholungsversuche, Crashdumps oder Hangdumps die Host-Factory sowohl im Controllerprozess als auch in untergeordneten Prozessen aufrufen können.
Important
Die Konfigurations- und Hosting-APIs verwenden die TPEXP Diagnose-ID und können sich in einer zukünftigen Version ändern. Sie sind in MTP 2.5-Vorschaupaketen verfügbar.