Modo de servidor

El modo de servidor MTP permite a un editor, IDE u otra herramienta de prueba iniciar una aplicación de prueba y impulsar la detección y ejecución mediante JSON-RPC. Use el modo de servidor al crear herramientas alrededor de MTP. En el caso de las ejecuciones normales de línea de comandos y CI, ejecute la aplicación de prueba directamente o use dotnet test.

Inicie el servidor JSON-RPC público con --server o --server jsonrpc.

Importante

El SDK de .NET utiliza un protocolo binario interno separado a través de --server dotnettestcli. No pases ese valor manualmente. dotnet test configura los argumentos de transporte y protocolo.

Uso del cliente de solo origen

A partir de MTP 2.4.0, el paquete Microsoft.Testing.Platform.ServerMode.Client.Sources proporciona un cliente de referencia para el protocolo JSON-RPC. El paquete inyecta código fuente de C# en su proyecto en lugar de añadir un ensamblado en tiempo de ejecución.

El diseño basado únicamente en el origen proporciona:

  • No hay ningún archivo DLL en tiempo de ejecución ni dependencia de implementación adicional.
  • Serialización nativa compatible con AOT y sin reflexión.
  • Tipos de protocolo y código de serialización del mismo repositorio que el servidor MTP.

Los tipos insertados MtpServerClient y IMtpServerClient pueden inicializar una conexión, detectar pruebas, ejecutar pruebas, salir del servidor de solicitudes y notificar actualizaciones de nodo de prueba. Los tipos siguen siendo internal para su ensamblado.

Cumplir los requisitos del cliente

Use C# 12 o una versión posterior. El paquete se establece LangVersion en 12.0 cuando el proyecto no especifica una versión de idioma. También proporciona tipos de compatibilidad internos para .NET Framework 4.6.2 y netstandard2.0.

Quite cualquier copia escrita a mano del cliente MTP antes de agregar el paquete para evitar tipos internos duplicados.

Elección del comportamiento de la conexión

Configure MtpServerClientOptions.IsStateful para indicar al servidor si el cliente conserva el estado a través de las solicitudes:

  • Deje el valor false para una sola solicitud de detección o ejecución y, a continuación, salga.
  • Establezca el valor true en para una sesión de editor o IDE que envíe varias solicitudes a través de la misma conexión.

El cliente envía esta configuración a través de la funcionalidad del protocolo experimental capabilities.testing.isStateful .

Véase también