Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Met de MTP-servermodus kan een editor, IDE of een ander testhulpprogramma een testtoepassing starten en detectie en uitvoering via JSON-RPC stimuleren. Gebruik de servermodus wanneer u hulpprogramma's rond MTP bouwt. Voor normale opdrachtregel- en CI-runs voert u de testtoepassing direct uit of gebruikt u dotnet test.
Start de openbare JSON-RPC server met --server of --server jsonrpc.
Belangrijk
De .NET SDK maakt gebruik van een afzonderlijk intern binair protocol via --server dotnettestcli. Geef die waarde niet zelf door.
dotnet test hiermee configureert u de transport- en protocolargumenten.
De bronclient gebruiken
De MTP 2.4 preview biedt een canonieke JSON-RPC client. Voeg het pakket Microsoft.Testing.Platform.ServerMode.Client.Sources toe. Het pakket injecteert C#-bron in uw project in plaats van een runtime-assembly toe te voegen.
Het alleen-bronontwerp biedt:
- Geen runtime-DLL of aanvullende implementatieafhankelijkheid.
- Systeemeigen AOT-compatibele, reflectievrije serialisatie.
- Protocoltypen en serialisatiecode uit dezelfde opslagplaats als de MTP-server.
De geïnjecteerde MtpServerClienten IMtpServerClientprotocoltypen kunnen een verbinding initialiseren, tests detecteren, tests uitvoeren, afsluiten van de server aanvragen en updates van testknooppunten rapporteren. Alle geïnjecteerde typen blijven internal aan de verbruikende assembly over.
Voldoen aan clientvereisten
Gebruik C# 12 of hoger. Het pakket stelt LangVersion in op 12.0 wanneer uw project geen taalversie opgeeft. Het levert ook interne compatibiliteitstypen voor .NET Framework 4.6.2 en netstandard2.0.
Verwijder een handgeschreven kopie van de MTP-client voordat u het pakket toevoegt om dubbele interne typen te voorkomen.
Een startmodel kiezen
Als u de testtoepassing als een extern proces wilt starten, gebruikt u MtpServerClient.LaunchAsync. De client is eigenaar van dat onderliggende proces en beëindigt het tijdens het afbreken wanneer dat nodig is.
Voor een embedded host of omgeving met een UI-thread die geen gebruik kan maken van Process.Start, gebruikt u MtpServerClient.LaunchInProcessAsync. De methode voert de testtoepassing uit via een asynchrone callback in het huidige proces. Blokkeer de startthread niet omdat de callback en client het proces delen.
Beide lanceringsmodellen maken gebruik van een loopback TCP-transport. WebAssembly van browser kan de vereiste listener niet maken, dus het starten van het proces genereert PlatformNotSupportedException. Starten in het proces biedt geen alternatief voor WebAssembly-transport.
De client afsluiten
Als u de client en de gestarte toepassing wilt afsluiten zonder de aanroepende thread te blokkeren, roept u IMtpServerClient.ShutdownAsync() aan. De asynchrone methode vermijdt problemen met de responsiviteit van de UI-thread en deadlocks in ingebedde hosts.
Voor een in-process host MtpServerClientOptions.ServerShutdownTimeout bepaalt u hoe lang de teardown wacht nadat de client het transport heeft gesloten. De standaardwaarde is 30 seconden. Lees ServerExitCode na het afsluiten om de exitcode van de callback op te halen. De waarde blijft null behouden terwijl de toepassing wordt uitgevoerd of wanneer de toepassing mislukt in plaats van een afsluitcode te retourneren.
Verbindingsgedrag kiezen
Stel MtpServerClientOptions.IsStateful in om de server te laten weten of de client de status behoudt tussen verzoeken:
- Laat de waarde
falsevoor één detectie- of uitvoeringsaanvraag staan, gevolgd door afsluiten. - Stel de waarde
truein op voor een editor- of IDE-sessie waarmee meerdere aanvragen via dezelfde verbinding worden verzonden.
De client verzendt deze instelling via de experimentele capabilities.testing.isStateful protocolmogelijkheid.