Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Režim serveru MTP umožňuje editoru, integrovanému vývojovému prostředí nebo jinému testovacímu nástroji spustit testovací aplikaci a řídit zjišťování a spouštění prostřednictvím JSON-RPC. Režim serveru použijte při sestavování nástrojů kolem MTP. Pro normální spuštění příkazového řádku a CI spusťte testovací aplikaci přímo nebo použijte dotnet test.
Spusťte veřejný JSON-RPC server s --server nebo --server jsonrpc.
Important
Sada .NET SDK používá samostatný interní binární protokol prostřednictvím --server dotnettestcli. Nepředávejte si tu hodnotu sami.
dotnet test nakonfiguruje argumenty přenosu a protokolu.
Použijte klienta pouze pro zdroj
MTP 2.4 poskytuje kanonického klienta JSON-RPC. Přidejte balíček Microsoft.Testing.Platform.ServerMode.Client.Sources. Balíček vkládá do projektu zdrojový kód C# namísto přidání sestavení za běhu.
Návrh pouze se zdrojem poskytuje:
- Není vyžadována žádná knihovna DLL za běhu ani žádná další závislost pro nasazení.
- Nativní serializace bez reflexe kompatibilní s AOT.
- Typy protokolů a kód serializace ze stejného úložiště jako server MTP.
Vložené typy MtpServerClient, IMtpServerClient a protokolů mohou inicializovat připojení, zjišťovat dostupné testy, spouštět testy, vyžádat ukončení serveru a hlásit aktualizace testovacích uzlů. Všechny vložené typy zůstanou pro využívající sestavení internal.
Splnění požadavků klienta
Použijte C# 12 nebo novější. Balíček respektuje nastavení verze jazyka vašeho projektu. Pokud váš cílový framework ve výchozím nastavení používá starší verzi jazyka C#, nastavte LangVersion na hodnotu 12.0 nebo novější. Balíček také poskytuje interní typy kompatibility pro .NET Framework 4.6.2 a netstandard2.0.
Před přidáním balíčku odeberte ručně napsanou kopii klienta MTP, abyste se vyhnuli duplicitním interním typům.
Volba modelu spuštění
Chcete-li spustit testovací aplikaci jako externí proces, použijte MtpServerClient.LaunchAsync. Klient vlastní daný podřízený proces a v případě potřeby ho ukončí během ukončování.
Pro prostředí vloženého hostitele nebo vlákna uživatelského rozhraní, ve kterém nelze použít Process.Start, použijte MtpServerClient.LaunchInProcessAsync. Metoda spustí testovací aplikaci prostřednictvím asynchronního zpětného volání v aktuálním procesu. Nezablokujte spouštěcí vlákno, protože proces sdílí zpětné volání a klient.
Oba modely spouštění používají transport TCP přes zpětnou smyčku. WebAssembly v prohlížeči nemůže vytvořit požadovaný listener, takže spuštění v rámci procesu vyhodí PlatformNotSupportedException. Spuštění v procesu neposkytuje alternativní přenos WebAssembly.
Vypnutí klienta
Chcete-li ukončit klienta a spuštěnou aplikaci bez blokování volajícího vlákna, zavolejte IMtpServerClient.ShutdownAsync(). Asynchronní metoda se ve vložených hostitelských prostředích vyhýbá problémům s odezvou vlákna uživatelského rozhraní a se zablokováním.
U hostitele v procesu určuje MtpServerClientOptions.ServerShutdownTimeout, jak dlouho ukončení čeká poté, co klient uzavře přenos. Výchozí hodnota je 30 sekund. Přečtěte si ServerExitCode po vypnutí a získejte ukončovací kód zpětného volání. Hodnota zůstane null , když se aplikace spustí nebo když aplikace selže místo vrácení ukončovacího kódu.
Deklarovat stavovost klienta
Počínaje verzí MTP 2.4.1 nastavte nulovatelnou možnost MtpServerClientOptions.IsStateful, která popisuje, jak klient využívá aktualizace testovacích uzlů:
| Value | Prohlášení |
|---|---|
true |
Klient zachová adresovatelnou sadu testovacích uzlů pro relaci a zachová poslední známý stav každého uzlu, dokud jej nezmění jiná aktualizace, podobně jako to může dělat průzkumník testů v IDE. |
false |
Klient zpracovává aktualizace bez zachování stavu testovacího uzlu. |
null (výchozí) |
Klient tuto schopnost nedeklaruje. Inicializační handshake vynechá pole. |
Klient odešle explicitní logickou hodnotu prostřednictvím schopnosti experimentálního protokolu capabilities.testing.isStateful. Stavovost je nezávislá na životnosti připojení a schopnosti serveru MultiRequestSupport. Klient se nestane stavovým pouze proto, že odesílá několik požadavků přes stejné připojení.
MTP 2.4.0 používá nenulovatelnou volbu typu Boolean s výchozí hodnotou false. Pokud chcete zachovat nedeklarovanou funkci, použijte MTP 2.4.1 nebo novější.
Uvnitř frameworku nebo rozšíření použijte experimentální IClientInfo službu ke kontrole deklarace. V clientInfo.Capabilities.IsStateful najdete konzervativní logický výsledek, což je false v případě, že schopnost není nedeklarována. V MTP 2.4.1 nebo novější ClientCapabilitiesExtensions.GetIsStateful() zachovává rozdíl mezi nedelarovanými, explicitně bezstavovými a stavovými klienty.
Kompatibilita s protokolem Negotiate
Od MTP 2.4 je vyjednávání protokolu v režimu serveru nezávislé na verzi balíčku NuGet MTP. Klient deklaruje verze protokolu, které podporuje, a server vybere společnou verzi. Pokud neexistuje žádná shodná podporovaná verze, testovací aplikace se ukončí s návratovým kódem ProtocolError (12) namísto toho, aby pokračovala s nekompatibilním komunikačním kontraktem.
K ověření zpráv použijte schéma JSON v režimu verze 1.0 . Serializátory System.Text.Json a Jsonite se řídí stejným schématem a obálkou chyb.