Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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
Förhandsversionen av MTP 2.4 innehåller en kanonisk JSON-RPC-klient. Lägg till Microsoft. Testing.Platform.ServerMode.Client.Sources-paketet. 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 injekterade typerna MtpServerClient, IMtpServerClient och protokoll kan initiera en anslutning, upptäcka tester, köra tester, begära att servern avslutas och rapportera uppdateringar om testnoder. Alla injicerade typer förblir internal för den konsumerande assemblyn.
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 en startmodell
Om du vill starta testprogrammet som en extern process använder du MtpServerClient.LaunchAsync. Klienten äger underprocessen och avslutar den vid behov under nedmonteringen.
För en inbäddad värd- eller UI-trådmiljö som inte kan använda Process.Startanvänder du MtpServerClient.LaunchInProcessAsync. Metoden kör testprogrammet via ett asynkront återanrop i den nuvarande processen. Blockera inte starttråden eftersom återanropet och klienten delar processen.
Båda startmodellerna använder en loopback TCP-transport. Browser WebAssembly kan inte skapa den lyssnare som krävs, så in-processstarten genererar PlatformNotSupportedException. In-process-start ger ingen alternativ WebAssembly-transport.
Stäng av klienten
Om du vill ta bort klienten och starta programmet utan att blockera den anropande tråden anropar du IMtpServerClient.ShutdownAsync(). Den asynkrona metoden undviker UI-trådens svarstider och dödlägesproblem i inbäddade värdar.
För en värd i processen styr MtpServerClientOptions.ServerShutdownTimeout hur länge nedmonteringen väntar efter att klienten har stängt transporten. Standardvärdet är 30 sekunder. Läs ServerExitCode efter avstängningen för att hämta återanropets slutkod. Värdet kvarstår null när programmet körs eller när programmet misslyckas i stället för att returnera en slutkod.
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
falseför en enda identifierings- eller körningsbegäran följt av avslut. - Ange värdet till
truefö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.