Modo de servidor

O modo de servidor MTP permite que um editor, uma IDE ou outra ferramenta de teste inicie uma aplicação de teste e controle a descoberta e a execução via JSON-RPC. Use o modo de servidor ao criar ferramentas em torno de MTP. Para execuções normais de linha de comando e CI, execute o aplicativo de teste diretamente ou use dotnet test.

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

Importante

O SDK do .NET usa um protocolo binário interno separado por meio de --server dotnettestcli. Não passe esse valor você mesmo. dotnet test configura os argumentos de transporte e protocolo.

Use o cliente somente 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 em C# no seu projeto em vez de adicionar um assembly em tempo de execução.

O design baseado apenas na fonte fornece:

  • Nenhuma DLL de runtime ou dependência de implantação adicional.
  • Serialização sem reflexão compatível com AOT nativo.
  • Tipos de protocolo e código de serialização do mesmo repositório que o servidor MTP.

Os tipos IMtpServerClient e MtpServerClient injetados podem inicializar uma conexão, descobrir testes, executar testes, solicitar o encerramento do servidor e relatar atualizações do nó de teste. Os tipos permanecem internal no seu assembly.

Atender aos requisitos do cliente

Use C# 12 ou mais recente. O pacote define LangVersion como 12.0 quando seu projeto não especifica uma versão da linguagem. Ele também fornece tipos de compatibilidade interna para .NET Framework 4.6.2 e netstandard2.0.

Remova qualquer cópia escrita à mão do cliente MTP antes de adicionar o pacote para evitar tipos internos duplicados.

Escolher o comportamento da conexão

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

  • Deixe o valor false para uma única solicitação de descoberta ou execução seguida de saída.
  • Defina o valor como true para uma sessão de editor ou de IDE que envia várias solicitações na mesma conexão.

O cliente envia essa configuração por meio da funcionalidade de protocolo experimental capabilities.testing.isStateful .

Consulte também