Modo servidor

O modo servidor MTP permite que um editor, IDE ou outra ferramenta de teste lance uma aplicação de teste e conduza a descoberta e execução através de JSON-RPC. Usa o modo servidor quando construíres ferramentas em torno do MTP. Para execuções normais de linha de comandos e CI, execute a aplicação de teste diretamente ou use dotnet test.

Inicie o servidor público de JSON-RPC com --server ou --server jsonrpc.

Importante

O SDK .NET utiliza um protocolo binário interno separado através de --server dotnettestcli. Não passes esse valor tu próprio. dotnet test configura os argumentos de transporte e protocolo.

Utilize apenas o cliente de origem

A partir do MTP 2.4.0, o pacote Microsoft.Testing.Platform.ServerMode.Client.Sources disponibiliza um cliente canónico para o protocolo JSON-RPC. O pacote injeta código-fonte C# no seu projeto em vez de adicionar uma assemblagem em tempo de execução.

A conceção apenas de origem proporciona o seguinte:

  • Sem DLL em tempo de execução ou dependência adicional de implementação.
  • Serialização nativa compatível com AOT, sem reflexão.
  • Tipos de protocolo e código de serialização provenientes do mesmo repositório do servidor MTP.

Os tipos IMtpServerClient e MtpServerClient injetados podem inicializar uma conexão, descobrir testes, executar testes, solicitar o encerramento do servidor e comunicar atualizações sobre o nó de teste. Os tipos permanecem internal na sua montagem.

Cumprir os requisitos do cliente

Usa C# 12 ou mais tarde. O pacote define LangVersion como 12.0 caso o seu projeto não especifique uma versão da linguagem. Também fornece tipos de compatibilidade interna para o .NET Framework 4.6.2 e netstandard2.0.

Remova qualquer cópia manuscrita do cliente MTP antes de adicionar o pacote para evitar tipos internos duplicados.

Escolher comportamento de ligação

Definir MtpServerClientOptions.IsStateful para indicar ao servidor se o cliente preserva o estado entre solicitações:

  • Deixe o valor false para um único pedido de descoberta ou execução seguido de saída.
  • Defina o valor como true para uma sessão de editor ou IDE que envie múltiplos pedidos na mesma ligação.

O cliente envia esta configuração através da capacidade do protocolo experimental capabilities.testing.isStateful .

Ver também