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.
Essas extensões controlam como e onde o MTP implanta e inicia o host de teste. Eles usam o ponto de extensão experimental ITestHostLauncher para controlar a implantação e a inicialização do host de teste.
Dica
Quando você usa Microsoft. Testing.Platform.MSBuild, instale o pacote NuGet de uma extensão para registrar a extensão automaticamente. Os executores MSTest, NUnit e xUnit incluem Microsoft.Testing.Platform.MSBuild transitivamente. Se você desativar o ponto de entrada gerado, chame AddSelfRegisteredExtensions para registrar os pacotes fornecidos pelo MSBuild.
Implantação de aplicativo empacotado
A extensão Microsoft.Testing.Extensions.PackagedApp registra um host de teste do Windows empacotado a partir do layout de saída da compilação e o ativa por ID de Modelo de Usuário do Aplicativo (AUMID).
O pacote foi introduzido no MTP 2.3. A partir do MTP 2.5, passa a dar suporte, de ponta a ponta, a hosts empacotados de confiança total e AppContainer, incluindo:
- Aplicativos WinUI 3 de confiança total empacotados.
- Aplicativos UWP modernos que usam
UseUwp. - Aplicativos UWP clássicos direcionados a
uap10.0. - Hosts WinUI 3
packagedClassicAppque definemTrustLevel="appContainer".
O MSTest.Sdk 4.5 ou versão posterior configura automaticamente esta extensão e o sidecar necessário do modelo de aplicativo de confiança total. Para comandos de instalação e execução de aplicativos, consulte Testar aplicativos UWP e WinUI 3 com MSTest e MTP.
Caution
A partir do MTP 2.4, Microsoft.Testing.Extensions.PackagedApp segue a versão de lançamento do MTP e sua API de registro público não é mais experimental. O ponto de extensão genérico ITestHostLauncher permanece experimental e pode mudar em uma versão futura.
Atender aos requisitos
Atenda a esses requisitos antes de usar a extensão:
- Defina como destino a versão da plataforma Windows
10.0.19041.0ou posterior para um aplicativo WinUI 3 empacotado. - Para registrar um layout de saída de compilação não assinado, habilite o Modo de Desenvolvedor ou configure o carregamento lateral.
- Para UWP, use o MSBuild para desktop do Visual Studio com a carga de trabalho UWP e o SDK do Windows necessário.
- Executar hosts de teste do AppContainer a partir de um processo controlador sem privilégios elevados.
Entender a ativação do pacote
Para um aplicativo empacotado, o inicializador:
- Localiza o
AppxManifest.xmlque descreve o executável de teste. - Registra o layout da saída da compilação para o usuário atual.
- Resolve o AUMID do aplicativo de manifesto selecionado.
- Ativa o aplicativo e o conecta ao controlador MTP.
Para packagedClassicApp e win32App hosts, Windows fornece argumentos MTP por meio da matriz de argumentos de processo normal. Esse comportamento também se aplica a um packagedClassicApp que usa AppContainer.
Para uma UWP windowsApp, o Windows fornece uma cadeia de caracteres de ativação opaca por meio de LaunchActivatedEventArgs.Arguments. Em OnLaunched, chame PackagedAppExtensions.GetTestApplicationArguments antes de criar o builder de MTP.
Conectar um host AppContainer
Um token AppContainer inclui um SID de pacote restrito. Um pipe nomeado que autoriza apenas o usuário atual rejeita o processo AppContainer mesmo quando ele pertence ao mesmo usuário conectado.
No MTP 2.5 ou em versões posteriores, o iniciador de aplicativo empacotado determina o SID exato do pacote do aplicativo selecionado e solicita ao MTP que conceda a esse SID os direitos mínimos de cliente nos pipes de controlador e extensão. A extensão não concede ALL APPLICATION PACKAGES, reduz o nível de integridade do pipe nem exige uma isenção de loopback de rede.
O sidecar transfere metadados do controlador por meio do pacote LocalState. Ele também copia os artefatos TRX, dump, diagnostic e retry do armazenamento de propriedade do pacote para o diretório de resultados solicitado após a saída do host em área restrita.
Controlar a ativação automática
Por padrão, o inicializador só se habilita quando encontra um manifesto de pacote que descreve o aplicativo de teste. Um aplicativo WinUI 3 não empacotado ou um aplicativo comum de teste de console continua usando o caminho de inicialização direta.
Use TESTINGPLATFORM_PACKAGEDAPP_LAUNCHER para ignorar a detecção de pacote:
| Valor | Behavior |
|---|---|
auto ou não definido |
Habilitar somente para um layout empacotado. |
always |
Habilite para qualquer layout, incluindo um layout flexível que você deseja implantar antes da inicialização. |
never |
Desabilite o inicializador de aplicativo empacotado. |
Use TESTINGPLATFORM_PACKAGEDAPP_PIPEAUTHORIZATION para substituir a autorização do package-SID:
| Valor | Behavior |
|---|---|
auto ou não definido |
Autorize o SID do pacote somente quando o manifesto indicar um aplicativo AppContainer. |
always |
Solicite a autorização do package-SID para qualquer layout empacotado. |
never |
Mantenha a autorização do pipe somente para o usuário atual. |
Registrar a extensão manualmente
Se você não usar o registro automático do MSBuild, registre a extensão no construtor do MTP:
var builder = await TestApplication.CreateBuilderAsync(args);
builder.AddPackagedAppDeployment();
Não chame AddPackagedAppDeployment se o aplicativo já chama AddSelfRegisteredExtensions e referencia o pacote. Uma execução do MTP pode registrar apenas um inicializador do host de teste.