Modalità server

La modalità server MTP consente a un editor, all'IDE o ad altri strumenti di test di avviare un'applicazione di test e di eseguire l'individuazione e l'esecuzione tramite JSON-RPC. Usare la modalità server quando si compilano strumenti intorno a MTP. Per le normali esecuzioni da riga di comando e CI, eseguire direttamente l'applicazione di test oppure usare dotnet test.

Avviare il server JSON-RPC pubblico con --server o --server jsonrpc.

Importante

L'SDK di .NET usa un protocollo binario interno separato tramite --server dotnettestcli. Non passare questo valore manualmente. dotnet test configura gli argomenti del trasporto e del protocollo.

Usare il client di sola origine

A partire da MTP 2.4.0, il pacchetto Microsoft.Testing.Platform.ServerMode.Client.Sources fornisce un client canonico per il protocollo JSON-RPC. Il pacchetto inserisce il codice sorgente C# nel tuo progetto anziché aggiungere un assembly di runtime.

La progettazione basata esclusivamente sulla sorgente fornisce:

  • Nessuna DLL di runtime o dipendenza di distribuzione aggiuntiva.
  • Serializzazione nativa compatibile con AOT e priva di reflection.
  • Tipi di protocollo e codice di serializzazione dallo stesso repository del server MTP.

I tipi inseriti MtpServerClient e IMtpServerClient possono inizializzare una connessione, individuare i test, eseguire test, richiedere l'uscita del server e segnalare gli aggiornamenti del nodo di test. I tipi rimangono internal nell'assembly.

Soddisfare i requisiti del client

Usare C# 12 o versione successiva. Il pacchetto viene impostato su LangVersion12.0 quando il progetto non specifica una versione della lingua. Fornisce inoltre tipi di compatibilità interni per .NET Framework 4.6.2 e netstandard2.0.

Rimuovere qualsiasi copia scritta a mano del client MTP prima di aggiungere il pacchetto per evitare tipi interni duplicati.

Scegliere il comportamento di connessione

Impostare MtpServerClientOptions.IsStateful per indicare al server se il client mantiene lo stato tra le richieste:

  • Lasciare il valore false per una singola richiesta di individuazione o esecuzione seguita da exit.
  • Impostare il valore su true per un editor o una sessione IDE che invia più richieste sulla stessa connessione.

Il client invia questa impostazione tramite la funzionalità del protocollo sperimentale capabilities.testing.isStateful .

Vedere anche