Serverläge

Med MTP-serverläget kan ett redigeringsprogram, IDE eller annat testverktyg starta ett testprogram och köra identifiering och körning via JSON-RPC. Använd serverläge när du skapar verktyg runt MTP. För normala kommandorads- och CI-körningar kör du testprogrammet direkt eller använder dotnet test.

Starta den offentliga JSON-RPC-servern med --server eller --server jsonrpc.

Important

.NET SDK använder ett separat internt binärt protokoll via --server dotnettestcli. Skicka inte med det värdet på egen hand. dotnet test konfigurerar argumenten för transport och protokoll.

Använd endast källklienten

Från och med MTP 2.4.0 Microsoft. Testing.Platform.ServerMode.Client.Sources-paketet tillhandahåller en kanonisk klient för JSON-RPC protokollet. Paketet matar in C#-källan i projektet i stället för att lägga till en runtime-sammansättning.

Designen med endast källkod ger:

  • Ingen runtime-DLL eller ytterligare distributionsberoenden.
  • Inbyggd AOT-kompatibel, reflektionsfri serialisering.
  • Protokolltyper och serialiseringskod från samma lagringsplats som MTP-servern.

De inmatade MtpServerClient typerna och IMtpServerClient kan initiera en anslutning, identifiera tester, köra tester, begära serveravslut och rapportera testnoduppdateringar. Typerna finns kvar internal i sammansättningen.

Uppfylla klientkraven

Använd C# 12 eller senare. Paketet ställer in LangVersion till 12.0 om projektet inte anger någon språkversion. Den tillhandahåller även interna kompatibilitetstyper för .NET Framework 4.6.2 och netstandard2.0.

Ta bort en handskriven kopia av MTP-klienten innan du lägger till paketet för att undvika dubbletter av interna typer.

Välj anslutningsbeteende

Ange MtpServerClientOptions.IsStateful för att tala om för servern om klienten bevarar tillståndet mellan begäranden:

  • Lämna värdet false för en enda identifierings- eller körningsbegäran följt av avslut.
  • Ange värdet till true för en redigerare eller IDE-session som skickar flera begäranden via samma anslutning.

Klienten skickar den här inställningen via den experimentella protokollkapaciteten capabilities.testing.isStateful.

Se även