Testare la distribuzione dell'host

Queste estensioni controllano come e dove MTP distribuisce e avvia l'host di test. Usano il punto di estensione sperimentale ITestHostLauncher per gestire la distribuzione e l'avvio dell'host di test.

Tip

Quando si utilizza Microsoft.Testing.Platform.MSBuild, installare il pacchetto NuGet di un'estensione per registrare automaticamente l'estensione. I runner MSTest, NUnit e xUnit includono transitivamente Microsoft.Testing.Platform.MSBuild. Se si disabilita il punto di ingresso generato, chiamare AddSelfRegisteredExtensions per registrare i pacchetti che MSBuild aggiunge.

Distribuzione di app in pacchetto

L'estensione Microsoft.Testing.Extensions.PackagedApp registra un host di test Windows pacchettizzato dal layout di output della compilazione e lo attiva tramite Application User Model ID (AUMID).

Il pacchetto è stato introdotto in MTP 2.3. A partire da MTP 2.5, supporta host con attendibilità completa in pacchetto e host AppContainer end-to-end, tra cui:

  • App WinUI 3 in pacchetto con attendibilità completa.
  • App UWP moderne che usano UseUwp.
  • App UWP classiche destinate a uap10.0.
  • Host WinUI 3 packagedClassicApp che impostano TrustLevel="appContainer".

MSTest.Sdk 4.5 o versioni successive configura automaticamente questa estensione e il necessario sidecar del modello di app full-trust. Per l'installazione e l'esecuzione di comandi dell'applicazione, vedi Testare le app UWP e WinUI 3 con MSTest e MTP.

Caution

A partire da MTP 2.4, Microsoft.Testing.Extensions.PackagedApp segue la versione di rilascio di MTP e la sua API pubblica di registrazione non è più sperimentale. Il punto di estensione generico ITestHostLauncher rimane sperimentale e potrebbe cambiare in una versione futura.

Soddisfare i requisiti

Prima di usare l'estensione, soddisfare questi requisiti:

  • Usa come destinazione la versione 10.0.19041.0 o successiva della piattaforma Windows per un'app WinUI 3 pacchettizzata.
  • Per registrare un layout di output di compilazione non firmato, abilitare la modalità sviluppatore o configurare il trasferimento locale.
  • Per UWP, usa MSBuild desktop da Visual Studio con il carico di lavoro UWP e Windows SDK necessario.
  • Eseguire gli host di test AppContainer da un processo di controllo non elevato.

Informazioni sull'attivazione dei pacchetti

Per un'app pacchettizzata, il programma di avvio:

  1. Individua l'oggetto AppxManifest.xml che descrive l'eseguibile di test.
  2. Registra il layout di output di compilazione per l'utente corrente.
  3. Risolve l'AUMID dell'applicazione manifesto selezionata.
  4. Attiva l'applicazione e la connette al controller MTP.

Per gli host packagedClassicApp e win32App, Windows fornisce gli argomenti MTP tramite il normale array di argomenti del processo. Questo comportamento si applica anche a un packagedClassicApp oggetto che usa AppContainer.

Per una piattaforma UWPwindowsApp, Windows fornisce una stringa di attivazione opaca tramite LaunchActivatedEventArgs.Arguments. In OnLaunched, chiama PackagedAppExtensions.GetTestApplicationArguments prima di creare il builder MTP.

Connetti un host AppContainer

Un token di AppContainer include un SID di pacchetto con restrizioni. Una pipe denominata che consente l'accesso solo all'utente corrente rifiuta il processo AppContainer anche quando appartiene allo stesso utente che ha effettuato l'accesso.

In MTP 2.5 o versioni successive, il programma di avvio delle app in pacchetto ricava il SID esatto del pacchetto dell'applicazione selezionata e chiede a MTP di concedere a tale SID i diritti client minimi sul controller e sulle pipe di estensione. L'estensione non conferisce ALL APPLICATION PACKAGES, non riduce il livello di integrità della pipe né richiede un'esenzione di loopback di rete.

Il sidecar trasferisce i metadati del controller tramite il pacchetto LocalState. Copia anche gli artefatti TRX, dump, diagnostica e ripetizione dei tentativi dalla risorsa di archiviazione di proprietà del pacchetto alla directory dei risultati richiesta dopo l'uscita dall'host in modalità sandbox.

Controllare l'attivazione automatica

Per impostazione predefinita, l'utilità di avvio si abilita solo quando trova un manifesto del pacchetto che descrive l'applicazione di test. Un'app winUI 3 non in pacchetto o un'app di test della console normale rimane nel percorso di avvio diretto.

Usare TESTINGPLATFORM_PACKAGEDAPP_LAUNCHER per eseguire l'override del rilevamento dei pacchetti:

Value Behavior
auto o non impostato Attivare solo per un layout pacchettizzato.
always Abilita per qualsiasi layout, incluso un layout non vincolato che si desidera distribuire prima dell'avvio.
never Disattiva l'avvio delle app pacchettizzate.

Usare TESTINGPLATFORM_PACKAGEDAPP_PIPEAUTHORIZATION per eseguire l'override dell'autorizzazione PACKAGE-SID:

Value Behavior
auto o non impostato Autorizzare il SID del pacchetto solo quando il manifesto dichiara un'applicazione AppContainer.
always Richiedere l'autorizzazione package-SID per qualsiasi layout pacchettizzato.
never Mantieni l'autorizzazione della pipe solo per l'utente corrente.

Registrare manualmente l'estensione

Se non si usa la registrazione automatica di MSBuild, registrare l'estensione nel generatore MTP:

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

Non chiamare AddPackagedAppDeployment se l'applicazione chiama AddSelfRegisteredExtensions già e fa riferimento al pacchetto. Un'esecuzione MTP può registrare un solo programma di avvio dell'host di test.