Servermodus

Im MTP-Servermodus kann ein Editor, eine IDE oder ein anderes Testtool eine Testanwendung starten und die Ermittlung und Ausführung über JSON-RPC steuern. Verwenden Sie den Servermodus, wenn Sie Tools um MTP erstellen. Führen Sie für reguläre Befehlszeilen- und CI-Läufe die Testanwendung direkt aus oder verwenden Sie dotnet test.

Starten Sie den öffentlichen JSON-RPC-Server mit --server oder --server jsonrpc.

Important

Das .NET SDK verwendet ein separates internes binärprotokoll über --server dotnettestcli. Übergeben Sie diesen Wert nicht selbst. dotnet test konfiguriert die Transport- und Protokollargumente.

Nur den Quellclient verwenden

Ab MTP 2.4.0 stellt das Paket Microsoft.Testing.Platform.ServerMode.Client.Sources einen kanonischen Client für das JSON-RPC-Protokoll bereit. Das Paket fügt die C#-Quelle in Ihr Projekt ein, anstatt eine Laufzeitassembly hinzuzufügen.

Das Source-only-Design bietet Folgendes:

  • Keine Laufzeit-DLL oder zusätzliche Bereitstellungsabhängigkeit.
  • Native AOT-kompatible, spiegellose Serialisierung.
  • Protokolltypen und Serialisierungscode aus demselben Repository wie der MTP-Server.

Die injizierten MtpServerClient und IMtpServerClient Typen können eine Verbindung initialisieren, Tests erkennen, Tests ausführen, das Beenden des Servers anfordern und Aktualisierungen zu Testknoten melden. Die Typen bleiben internal für Ihre Assembly verfügbar.

Erfüllen der Clientanforderungen

Verwenden Sie C# 12 oder höher. Das Paket setzt LangVersion auf 12.0, wenn Ihr Projekt keine Sprachversion angibt. Außerdem stellt es interne Kompatibilitätstypen für .NET Framework 4.6.2 und netstandard2.0 bereit.

Entfernen Sie alle handschriftlichen Kopien des MTP-Clients, bevor Sie das Paket hinzufügen, um doppelte interne Typen zu vermeiden.

Verbindungsverhalten auswählen

Legen Sie MtpServerClientOptions.IsStateful fest, um dem Server mitzuteilen, ob der Client den Zustand über Anfragen hinweg beibehält:

  • Lassen Sie den Wert false für eine einzelne Ermittlungs- oder Ausführungsanforderung, gefolgt von "Exit".
  • Legen Sie den Wert true für eine Editor- oder IDE-Sitzung fest, die mehrere Anforderungen über dieselbe Verbindung sendet.

Der Client sendet diese Einstellung über die experimentelle capabilities.testing.isStateful Protokollfunktion.

Siehe auch