Prueba de la implementación del host

Estas extensiones controlan cómo y dónde se implementa MTP e inician el host de prueba. Usan el punto de extensión experimental ITestHostLauncher para controlar la implementación y el inicio del host de prueba.

Sugerencia

Cuando se usa Microsoft. Testing.Platform.MSBuild, instale el paquete NuGet de una extensión para registrar la extensión automáticamente. Los ejecutores MSTest, NUnit y xUnit incluyen Microsoft.Testing.Platform.MSBuild transitivamente. Si deshabilita el punto de entrada generado, llame a AddSelfRegisteredExtensions para registrar los paquetes proporcionados por MSBuild.

Implementación de aplicaciones empaquetadas

La extensión Microsoft.Testing.Extensions.PackagedApp registra un host de pruebas de Windows empaquetado a partir de su estructura de salida de compilación y lo activa mediante el identificador del modelo de usuario de la aplicación (AUMID).

El paquete se introdujo en MTP 2.3. A partir de MTP 2.5, admite hosts empaquetados de plena confianza y AppContainer de un extremo a otro, entre los que se incluyen:

  • Aplicaciones WinUI 3 empaquetadas de plena confianza.
  • Aplicaciones para UWP modernas que usan UseUwp.
  • Aplicaciones UWP clásicas destinadas a uap10.0.
  • Los hosts de WinUI 3 packagedClassicApp que establecen TrustLevel="appContainer".

MSTest.Sdk 4.5 o posterior configura automáticamente esta extensión y el sidecar del modelo de aplicación de confianza total necesario. Para obtener comandos de configuración y ejecución de aplicaciones, consulta Probar aplicaciones para UWP y WinUI 3 con MSTest y MTP.

Caution

A partir de MTP 2.4, Microsoft.Testing.Extensions.PackagedApp sigue la versión de lanzamiento de MTP, y su API pública de registro ya no es experimental. El punto de extensión genérico ITestHostLauncher sigue siendo experimental y podría cambiar en una versión futura.

Cumplir los requisitos

Cumpla estos requisitos antes de usar la extensión:

  • Use como destino la versión 10.0.19041.0 o posterior de la plataforma Windows para una aplicación WinUI 3 empaquetada.
  • Para registrar un diseño de salida de compilación sin firmar, habilita el modo de desarrollador o configura la instalación paralela.
  • Para UWP, usa MSBuild de escritorio desde Visual Studio con la carga de trabajo de UWP y el SDK de Windows necesario.
  • Ejecute los hosts de prueba de AppContainer desde un proceso de controlador sin privilegios elevados.

Comprender la activación de paquetes

Para una aplicación empaquetada, el lanzador:

  1. Localiza el AppxManifest.xml que describe el ejecutable de prueba.
  2. Registra el diseño de la salida de compilación para el usuario actual.
  3. Resuelve el AUMID de la aplicación del manifiesto seleccionado.
  4. Activa la aplicación y la conecta al controlador MTP.

Para los hosts packagedClassicApp y win32App, Windows proporciona los argumentos de MTP a través de la matriz habitual de argumentos del proceso. Este comportamiento también se aplica a un packagedClassicApp que usa AppContainer.

Para UWPwindowsApp, Windows proporciona una cadena de activación opaca a través de LaunchActivatedEventArgs.Arguments. En OnLaunched, llame a PackagedAppExtensions.GetTestApplicationArguments antes de crear el generador de MTP.

Conexión de un host de AppContainer

Un token de AppContainer incluye un SID de paquete restringido. Una canalización con nombre que autoriza solo al usuario actual rechaza el proceso de AppContainer incluso cuando pertenece al mismo usuario que ha iniciado sesión.

En MTP 2.5 o posterior, el iniciador de aplicaciones empaquetadas deriva el SID exacto del paquete de la aplicación seleccionada y pide a MTP que conceda a ese SID los derechos mínimos de cliente en los tubos de controlador y extensión. La extensión no otorga ALL APPLICATION PACKAGES, no reduce el nivel de integridad de la canalización ni requiere una exención de loopback de red.

El sidecar transfiere los metadatos del controlador a través del paquete LocalState. También copia los artefactos TRX, de volcado, de diagnóstico y de reintento del almacenamiento del paquete al directorio de resultados solicitado después de que el host en espacio aislado se cierre.

Controlar la activación automática

De forma predeterminada, el iniciador solo se habilita cuando encuentra un manifiesto de paquete que describe la aplicación de prueba. Una aplicación WinUI 3 sin empaquetar o una aplicación ordinaria de prueba de consola permanece en la ruta de inicio directo.

Use TESTINGPLATFORM_PACKAGEDAPP_LAUNCHER para invalidar la detección de paquetes:

Value Behavior
auto o no establecido Habilítelo solo para un diseño empaquetado.
always Habilite para cualquier diseño, incluido un diseño flexible que quiera implementar antes del inicio.
never Deshabilite el iniciador de aplicaciones empaquetadas.

Use TESTINGPLATFORM_PACKAGEDAPP_PIPEAUTHORIZATION para anular la autorización de package-SID:

Value Behavior
auto o sin establecer Autorice el SID del paquete solo cuando el manifiesto declare una aplicación AppContainer.
always Solicitar autorización del SID de paquete para cualquier diseño empaquetado.
never Mantenga la autorización de la canalización solo para el usuario actual.

Registro manual de la extensión

Si no usa el registro automático de MSBuild, registre la extensión en el generador de MTP:

var builder = await TestApplication.CreateBuilderAsync(args);
builder.AddPackagedAppDeployment();

No llame a AddPackagedAppDeployment si la aplicación ya llama a AddSelfRegisteredExtensions y hace referencia al paquete. Una ejecución de MTP solo puede registrar un iniciador de host de prueba.