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 nastaví LangVersion na 12.0, pokud váš projekt neurčuje jazykovou verzi. Poskytuje také 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.
Zvolte chování připojení
Nastavte MtpServerClientOptions.IsStateful , aby server řekl, jestli klient zachovává stav napříč požadavky:
- Ponechte hodnotu
falsepro jedno zjištění nebo požadavek na spuštění následovaný ukončením. - Nastavte hodnotu na
truepro relaci editoru nebo IDE, která odesílá více požadavků přes stejné připojení.
Klient toto nastavení odešle prostřednictvím funkce experimentálního capabilities.testing.isStateful protokolu.
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.