Idioma
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 pacote de pré-visualização MSTest.Windows.UIAutomation integra o gerenciamento do ciclo de vida do MSTest à API interna do Windows Automação da Interface do Usuário. Use para iniciar um aplicativo de área de trabalho de confiança total não empacotado, encontrar uma das janelas como um AutomationElemente parar o aplicativo após cada teste.
O pacote dá suporte a aplicativos Win32, Windows Forms e WPF em uma sessão de Windows interativa. Ele não fornece ativação MSIX, UWP ou WinUI, automação de processo elevado, uma área de trabalho sem cabeça, localizadores, esperas automáticas, capturas de tela ou um modelo de objeto de várias janelas.
Importante
Esse recurso requer pacotes de versão prévia do MSTest 4.5 e uma estrutura de destino específica Windows.
Habilitar Windows Automação da Interface do Usuário
Com MSTest.Sdk, defina EnableWindowsUIAutomation como true:
<Project Sdk="MSTest.Sdk/4.5.0">
<PropertyGroup>
<TargetFramework>net8.0-windows</TargetFramework>
<EnableWindowsUIAutomation>true</EnableWindowsUIAutomation>
</PropertyGroup>
</Project>
MSTest.Sdk adiciona o pacote correspondente MSTest.Windows.UIAutomation . Sem MSTest.Sdk, faça referência a MSTest.Windows.UIAutomation, MSTest.TestFramework e MSTest.TestAdapter nas versões correspondentes do MSTest. Faça referência a uma versão compatível Microsoft.NET.Test.Sdk separadamente porque ela segue a linha de versão do VSTest.
Para um projeto destinado ao Windows que é restaurado ou compilado no Linux ou no macOS, defina EnableWindowsTargeting como true.
Escolher uma classe base
Derivar de uma destas classes:
-
ApplicationTestinicia o aplicativo antes de cada teste e o interrompe durante o descarte. SobrescrevaCreateProcessStartInfopara identificar o executável. -
WindowTesttambém aguarda uma janela e a disponibiliza por meio deMainWindow.
Declare STATestClass diretamente em cada classe de teste concreta porque os atributos da classe de teste MSTest não são herdados:
using System.Diagnostics;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Microsoft.VisualStudio.TestTools.UnitTesting.Windows.UIAutomation;
[STATestClass]
public sealed class MyAppTests : WindowTest
{
protected override ProcessStartInfo CreateProcessStartInfo()
=> new(@"C:\MyApp\MyApp.exe");
}
Imports System.Diagnostics
Imports Microsoft.VisualStudio.TestTools.UnitTesting
Imports Microsoft.VisualStudio.TestTools.UnitTesting.Windows.UIAutomation
<STATestClass>
Public NotInheritable Class MyAppTests
Inherits WindowTest
Protected Overrides Function CreateProcessStartInfo() As ProcessStartInfo
Return New ProcessStartInfo("C:\MyApp\MyApp.exe")
End Function
End Class
Use MainWindow em seus métodos de teste para consultar ou invocar padrões de Windows Automação da Interface do Usuário. O pacote usa a API UIA2 System.Windows.Automation . Você pode colocar outra biblioteca em camadas, como FlaUI, sobre a AutomationElement exposta quando precisar de interação de elementos mais avançada.
Personalizar a inicialização e a descoberta de janelas
Sobrescreva estes membros quando os valores padrão não atenderem ao seu aplicativo:
-
ApplicationShutdownTimeoutcontrola quanto tempo a classe base aguarda o desligamento normal e o encerramento forçado. O padrão é cinco segundos. -
WindowDiscoveryTimeoutcontrola quanto tempoWindowTestespera por uma janela. O padrão é 10 segundos. -
FindWindowseleciona uma janela para aplicativos que usam um processo inicializador, mostram uma tela inicial ou criam várias janelas de nível superior. -
StopApplicationdesliga um aplicativo quando a janela selecionada pertence a um processo diferente do processo iniciadoCreateProcessStartInfo.
As classes base observam TestContext.CancellationToken durante a inicialização e a descoberta de janelas.
WindowTest falha quando o aplicativo é encerrado antes que uma janela seja exibida ou quando a descoberta atinge o tempo limite.
Entender o comportamento do ciclo de vida
ApplicationTest inicia um processo de aplicativo para cada invocação de teste.
WindowTest descobre a janela depois que o processo é iniciado. Depois que o teste e seus métodos de limpeza forem concluídos, o MSTest descartará a classe base, solicitará um fechamento normal pela janela principal e encerrará a árvore de processo se o aplicativo não sair dentro do tempo limite configurado.
Para testes e tentativas parametrizados, cada invocação recebe seu próprio ciclo de vida do aplicativo.