Freigeben über


Erstellen benutzerdefinierter Erweiterungen

Dieser Artikel richtet sich an Entwickler, die benutzerdefinierte Testframeworks oder Erweiterungen für Microsoft.Testing.Platform erstellen.

Hinweis

Den vollständigen Beispielcode finden Sie unter " TestingPlatformExamples " im Microsoft Test Framework-Repository.

Zusammenfassung des Erweiterungspunkts

Erweiterungspunkt Ein-/Ausprozess Zweck
ITestFramework In Bearbeitung Die einzige obligatorische Erweiterung. Ermittelt und führt Tests aus.
IDataConsumer In Bearbeitung Abonniert und verarbeitet Testdaten aus dem Nachrichtenbus.
ITestSessionLifetimeHandler In Bearbeitung Führt Code vor und nach einer Testsitzung aus.
ITestApplicationLifecycleCallbacks In Bearbeitung Führt Code ganz am Anfang und ganz am Ende des Testhosts aus.
ICommandLineOptionsProvider Beides Fügt benutzerdefinierte Befehlszeilenoptionen hinzu.
ITestHostEnvironmentVariableProvider prozessübergreifend Legt Umgebungsvariablen fest, bevor der Testhost gestartet wird.
ITestHostProcessLifetimeHandler Außerhalb des Prozesses Beobachtet den Testhostprozess extern.

In-Process- und Out-of-Process-Erweiterungen

Erweiterungen werden in zwei Typen unterteilt:

  • Prozessinterne Erweiterungen werden zusammen mit dem Testframework innerhalb des Testhostprozesses ausgeführt. Registrieren Sie sie über builder.TestHost:

    var builder = await TestApplication.CreateBuilderAsync(args);
    builder.TestHost.AddXXX(/* ... */);
    
  • Out-of-Process-Erweiterungen werden in einem separaten Prozess ausgeführt, der den Testhost beobachtet. Registrieren Sie sie über builder.TestHostControllers:

    var builder = await TestApplication.CreateBuilderAsync(args);
    builder.TestHostControllers.AddXXX(/* ... */);
    

Out-of-Process-Erweiterungen sind erforderlich, wenn:

  • Sie müssen Umgebungsvariablen festlegen, bevor der Testhost gestartet wird.
  • Sie müssen den Testhost extern überwachen, da der Benutzercode möglicherweise abstürzt oder den Prozess aufhängt.

Wenn eine Out-of-Process-Erweiterung registriert wird, startet die Plattform automatisch einen zweiten Prozess.

Die IExtension-Schnittstelle

Alle Erweiterungspunkte erben von IExtension, das Identifikation und Opt-In/Opt-Out bietet:

public interface IExtension
{
    string Uid { get; }
    string Version { get; }
    string DisplayName { get; }
    string Description { get; }
    Task<bool> IsEnabledAsync();
}
  • Uid: Ein eindeutiger Bezeichner für die Erweiterung. Wählen Sie einen eindeutigen Wert aus, um Konflikte zu vermeiden.
  • Version: Die Version der Erweiterung unter Verwendung der semantischen Versionsverwaltung.
  • DisplayName: Ein benutzerfreundlicher Name, der in Protokollen und --info Ausgaben angezeigt wird.
  • Description: Eine Beschreibung, die in der --info Ausgabe angezeigt wird.
  • IsEnabledAsync(): Kehren Sie false zurück, um die Erweiterung aus der Sitzung auszuschließen. In der Regel basieren Entscheidungen auf Konfigurationsoptionen oder Befehlszeilenoptionen.
  • Erstellen Sie ein Testframework: Erstellen Sie eine benutzerdefinierte ITestFramework Implementierung, behandeln Sie Anforderungen und melden Sie Testergebnisse.
  • Erweiterungen erstellen: Erstellen Sie In-Process- und Out-of-Process-Erweiterungen wie Datenkonsumenten, Sitzungshandlern und Prozessmonitoren.
  • VSTest-Brücke: Vereinfachen Der Migration vorhandener VSTest-basierter Testframeworks zu Microsoft.Testing.Platform.
  • Fähigkeiten: Fähigkeiten des Frameworks und der Erweiterungen deklarieren und abfragen.
  • Dienste: Access-Konfiguration, Protokollierung, Nachrichtenbus und andere Plattformdienste.