Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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 versão prévia do MTP 2.4 fornece um cliente de JSON-RPC canônico. Adicione o pacote Microsoft.Testing.Platform.ServerMode.Client.Sources. 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 injetados IMtpServerClient, MtpServerClient e de protocolo podem inicializar uma conexão, descobrir testes, executar testes, solicitar o encerramento do servidor e relatar atualizações do nó de teste. Todos os tipos injetados permanecem internal para o assembly consumidor.
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 um modelo de inicialização
Para iniciar o aplicativo de teste como um processo externo, use MtpServerClient.LaunchAsync. O cliente é responsável por esse processo filho e o encerra durante a desinstalação, quando necessário.
Para um host incorporado ou um ambiente com thread de interface do usuário que não possa usar Process.Start, use MtpServerClient.LaunchInProcessAsync. O método executa o aplicativo de teste por meio de um callback assíncrono no processo atual. Não bloqueie a thread de inicialização porque o callback e o cliente estão no mesmo processo.
Ambos os modelos de inicialização usam um transporte TCP em loopback. O Navegador WebAssembly não pode criar o ouvinte necessário, portanto, a inicialização em processo gera PlatformNotSupportedException. A inicialização em processo não fornece um transporte WebAssembly alternativo.
Desligar o cliente
Para desinstalar o cliente e o aplicativo iniciado sem bloquear o thread de chamada, chame IMtpServerClient.ShutdownAsync(). O método assíncrono evita problemas de responsividade da thread da interface do usuário e de deadlock em hosts incorporados.
Para um host em processo, MtpServerClientOptions.ServerShutdownTimeout controla quanto tempo o teardown aguarda após o cliente fechar o transporte. O padrão é 30 segundos. Leia ServerExitCode após o encerramento para obter o código de saída do callback. O valor permanece null enquanto o aplicativo é executado ou quando o aplicativo falha em vez de retornar um código de saída.
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
falsepara uma única solicitação de descoberta ou execução seguida de saída. - Defina o valor como
truepara 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 .