Instruções passo a passo: criando, editando e mantendo um teste de IU codificado
Neste passo a passo, você criará um aplicativo simples do Windows Presentation Foundation (WPF) para demonstrar como criar, editar e manter um teste de IU codificado.O passo a passo fornece soluções para corrigir os testes que foram interrompidos por vários problemas de timing e refatoração de controle.
Pré-requisitos
Para este passo a passo, será necessário:
- Visual Studio Ultimate ou Visual Studio Premium.
Criar um aplicativo WPF simples
No menu ARQUIVO, aponte para Novo e selecione Projeto.
A caixa de diálogo Novo Projeto é exibida.
No painel Instalado, expanda Visual C# e selecione Área de Trabalho do Windows.
Acima do painel central, verifique se a lista suspensa de framework de destino está definida como .NET Framework 4.5.
No painel do meio, selecione o modelo Aplicativo WPF.
Na caixa de texto Nome, digite SimpleWPFApp.
Escolha a pasta em que você salvará o projeto.Na caixa de texto Local, digite o nome da pasta.
Escolha OK.
O WPF Designer for Visual Studio abre e exibe a MainWindow do projeto.
Se a caixa de ferramentas não estiver aberta, abra-a.Escolha o menu EXIBIR e a opção Caixa de Ferramentas.
Na seção Todos os Controles do WPF, arraste um controle Button, CheckBox e ProgressBar para a MainWindow na superfície de design.
Selecione o controle Button.Na janela Propriedades, altere o valor da propriedade Nome de <No Name> para button1.Em seguida, altere o valor da propriedade Conteúdo de Button para Start.
Selecione o controle ProgressBar.Na janela Propriedades, altere o valor da propriedade Nome de <No Name> para progressBar1.Em seguida, altere o valor da propriedade Máximo de 100 para 10000.
Selecione o controle Checkbox.Na janela Propriedades, altere o valor da propriedade Nome de <No Name> para checkBox1 e desmarque a propriedade IsEnabled.
Clique duas vezes no controle de botão para adicionar um manipulador de eventos de clique.
O MainWindow.xmal.cs é exibido no Editor de Códigos com o cursor no novo método button1_Click.
Na parte superior da classe MainWindow, adicione um delegado.O delegado será usado para a barra de progresso.Para adicionar o delegado, adicione o seguinte código:
public partial class MainWindow : Window { private delegate void ProgressBarDelegate(System.Windows.DependencyProperty dp, Object value); public MainWindow() { InitializeComponent(); }
No método button1_Click, adicione o seguinte código:
private void button1_Click(object sender, RoutedEventArgs e) { double progress = 0; ProgressBarDelegate updatePbDelegate = new ProgressBarDelegate(progressBar1.SetValue); do { progress ++; Dispatcher.Invoke(updatePbDelegate, System.Windows.Threading.DispatcherPriority.Background, new object[] { ProgressBar.ValueProperty, progress }); progressBar1.Value = progress; } while (progressBar1.Value != progressBar1.Maximum); checkBox1.IsEnabled = true; }
Salve o arquivo.
Verificar se o aplicativo WPF é executado corretamente
No menu DEPURAR, selecione Iniciar Depuração ou pressione F5.
Observe que o controle da caixa de seleção está desabilitado.Escolha Iniciar.
Em alguns segundos, a barra de progresso deve estar 100% concluída.
Agora é possível selecionar o controle da caixa de seleção.
Feche o SimpleWPFApp.
Criar e executar um teste de IU codificado para SimpleWPFApp
Localize o aplicativo SimpleWPFApp criado anteriormente.Por padrão, o aplicativo fica localizado em C:\Usuários\<nomedousuário>\Documentos\Visual Studio 2013\Projetos\SimpleWPFApp\SimpleWPFApp\bin\Debug\SimpleWPFApp.exe
Crie um atalho na área de trabalho para o aplicativo SimpleWPFApp.Clique com o botão direito do mouse em SimpleWPFApp.exe e escolha Copiar.Na área de trabalho, clique com o botão direito do mouse e escolha Colar atalho.
Dica Um atalho para o aplicativo facilita adicionar ou modificar testes de IU codificados para seu aplicativo porque permite iniciar rapidamente o aplicativo.
No Gerenciador de Soluções, clique com o botão direito do mouse na solução, clique em Adicionar e selecione Novo Projeto.
A caixa de diálogo Adicionar Novo Projeto é exibida.
No painel Instalado, expanda Visual C# e selecione Testar.
No painel central, selecione o modelo Projeto de Teste de Interface de Usuário Codificado.
Escolha OK.
No Gerenciador de Soluções, o novo projeto de teste de IU codificado chamado CodedUITestProject1 é adicionado à solução.
A caixa de diálogo Gerar Código para Teste de IU Codificado é exibida.
Selecione a opção Gravar ações, editar o mapa de IU ou adicionar asserções e escolha OK.
O UIMap – Construtor de Teste de IU Codificado é exibido e a janela do Visual Studio é minimizada.
Para obter mais informações sobre as opções da caixa de diálogo, consulte Criando testes de IU codificados.
Escolha Iniciar Gravação no UIMap – Construtor de Teste de IU Codificado.
Se necessário, será possível pausar a gravação, por exemplo, se você tiver que lidar com um email recebido.
Cuidado Todas as ações realizadas na área de trabalho serão registradas.Pause a gravação se estiver realizando ações que possam levar à exclusão de dados confidenciais na gravação.
Abra o SimpleWPFApp usando o atalho da área de trabalho.
Como antes, observe que o controle da caixa de seleção está desabilitado.
No SimpleWPFApp, escolha Iniciar.
Em alguns segundos, a barra de progresso deve estar 100% concluída.
Marque o controle de caixa de seleção, que agora está habilitado.
Feche o aplicativo SimpleWPFApp.
No UIMap – Construtor de Teste de IU Codificado, escolha Gerar Código.
Em Nome do Método, digite SimpleAppTest e escolha Adicionar e Gerar.Em alguns segundos, o teste de IU codificado aparece e é adicionado à solução.
Feche o UIMap – Construtor de Teste de IU Codificado.
O arquivo CodedUITest1.cs aparece no Editor de Códigos.
Salve seu projeto.
Executar o teste de IU codificado
No menu TESTAR, escolha Windows e Gerenciador de Testes.
No menu COMPILAÇÃO, escolha Compilar Solução.
No arquivo CodedUITest1.cs, localize o método CodedUITestMethod, clique com o botão direito do mouse e selecione Executar Testes ou execute o teste do Gerenciador de Testes.
Durante a execução do teste de IU codificado, o SimpleWPFApp permanece visível.Ele conduz as etapas realizadas no procedimento anterior.No entanto, quando o teste tenta marcar a caixa de seleção do controle de caixa de seleção, a janela Resultados do Teste mostra que o teste falhou.Isso ocorre porque o teste tenta marcar a caixa de seleção, mas não sabe que o controle de caixa de seleção permanece desabilitado até a barra de progresso ficar 100% concluída.Você pode corrigir esse e outros problemas semelhantes usando os vários métodos UITestControl.WaitForControlXXX() que estão disponíveis para testes de IU codificados.O próximo procedimento demonstrará o uso do método WaitForControlEnabled() para corrigir o problema que causou a falha desse teste.Para obter mais informações, consulte Fazendo testes de IU codificado aguardar eventos específicos durante a reprodução.
Editar e executar novamente o teste de IU codificado
Na janela do Gerenciador de Testes, selecione o teste que falhou e, na seção StackTrace, escolha o primeiro link para UIMap.SimpleAppTest().
O arquivo UIMap.Designer.cs é aberto com o ponto do erro realçado no código:
// Select 'CheckBox' check box uICheckBoxCheckBox.Checked = this.SimpleAppTestParams.UICheckBoxCheckBoxChecked;
Para corrigir esse problema, você pode fazer o teste de IU codificado esperar o controle CheckBox ser habilitado antes de continuar nessa linha usando o método WaitForControlEnabled().
Cuidado Não modifique o arquivo UIMap.Designer.cs.Todas as alterações de código que você fez no arquivo UIMapDesigner.cs serão substituídas cada vez que você gerenciar o código usando o UIMap - Construtor de Teste de IU Codificado.Se você tiver de modificar um método gravado, copie-o para o arquivo UIMap.cs e renomeie-o.O arquivo UIMap.cs pode ser usado para substituir métodos e propriedades no arquivo UIMapDesigner.cs.Você deve remover a referência para o método original no arquivo Coded UITest.cs e substituí-la pelo nome do método renomeado.
No Gerenciador de Soluções, localize UIMap.uitest em seu projeto de teste de IU codificado.
Abra o menu de atalho de UIMap.uitest e escolha Abrir.
O teste de IU codificado é exibido no Editor de Teste de IU Codificado.Agora você pode ver e editar o teste de IU codificado.
No painel Ação de interface do usuário, selecione o método de teste (SimpleAppTest) que deseja mover para o arquivo UIMap.cs ou UIMap.vb para facilitar a funcionalidade de código personalizado, que não será substituída quando o código de teste for recompilado.
Escolha o botão Mover o Código na barra de ferramentas do Editor de Teste de IU Codificado.
Uma caixa de diálogo do Microsoft Visual Studio é exibida.Ela avisa que o método será movido do arquivo UIMap.uitest para o arquivo UIMap.cs e que você não poderá mais editar o método usando o Editor de Teste de IU Codificado.Selecione Sim.
O método de teste é removido do arquivo UIMap.uitest e não é mais exibido no painel Ações de interface do usuário.Para editar o arquivo de teste movido, abra o arquivo UIMap.cs no Gerenciador de Soluções.
Na barra de ferramentas do Visual Studio, escolha Salvar.
As atualizações do método de teste são salvas no arquivo UIMap.Designer.
Cuidado Depois de mover o método, você não pode mais editá-lo usando o Editor de Teste de IU Codificado.Você deve adicionar seu código personalizado e mantê-lo usando o Editor de Códigos.
Renomear o método de SimpleAppTest() para ModifiedSimpleAppTest()
Adicione o seguinte usando a instrução para o arquivo:
using Microsoft.VisualStudio.TestTools.UITesting.WpfControls;
Adicione o seguinte método WaitForControlEnabled() antes da linha de código problemática identificada anteriormente:
uICheckBoxCheckBox.WaitForControlEnabled(); // Select 'CheckBox' check box uICheckBoxCheckBox.Checked = this.SimpleAppTestParams.UICheckBoxCheckBoxChecked;
No arquivo CodedUITest1.cs, localize o método CodedUITestMethod e comente ou renomeie a referência ao método SimpleAppTest() original e substitua-o pelo novo ModifiedSimpleAppTest():
[TestMethod] public void CodedUITestMethod1() { // To generate code for this test, select "Generate Code for Coded UI Test" from the shortcut menu and select one of the menu items. // For more information on generated code, see https://go.microsoft.com/fwlink/?LinkId=179463 //this.UIMap.SimpleAppTest(); this.UIMap.ModifiedSimpleAppTest(); }
No menu Compilação, escolha Compilar Solução.
Clique com o botão direito do mouse no método CodedUITestMethod e selecione Executar Testes.
Dessa vez, o teste de IU codificado conclui com sucesso todas as etapas do teste e Aprovado é exibido na janela do Gerenciador de Testes.
Refatorar um controle no SimpleWPFApp
No arquivo MainWindow.xaml, no Designer, selecione o controle button.
No topo da janela Propriedades, altere o valor da propriedade Nome de button1 para buttonA.
No menu Compilação, escolha Compilar Solução.
No Gerenciador de Testes, execute CodedUITestMethod1.
O teste falha porque o teste de IU codificado não consegue localizar o controle button mapeado originalmente no UIMap como button1.A refatoração pode afetar os teste de IU codificados dessa forma.
Na janela do Gerenciador de Testes, na seção StackTrace, escolha o primeiro link ao lado de UIMpa.ModifiedSimpleAppTest().
O arquivo UIMap.cs abre.O ponto de erro é realçado no código:
// Click 'Start' button Mouse.Click(uIStartButton, new Point(27, 10));
Observe que a linha de código anterior neste procedimento está usando UiStartButton, que é o nome do UIMap antes de ser refatorado.
Para corrigir o problema, você pode adicionar o controle refatorado ao UIMap usando o Construtor de Teste de IU Codificado.Você pode atualizar o código do teste para usar o código, como demonstrado no próximo procedimento.
Mapear o controle refatorado e editar e executar novamente o teste de IU codificado
No arquivo CodedUITest1.cs, no método CodedUITestMethod1(), clique com o botão direito do mouse, selecione Gerar Código para Teste de IU Codificado e escolha Usar o Construtor de Teste de IU Codificado.
O UIMap – Construtor de Teste de IU Codificado será exibido.
Usando o atalho na área de trabalho criado anteriormente, execute o aplicativo SimpleWPFApp criado antes.
No UIMap – Construtor de Teste de IU Codificado, arraste a ferramenta de cruz no botão Iniciar no SimpleWPFApp.
O botão Iniciar é incluído em uma caixa azul e o Construtor de Teste de IU Codificado demora alguns segundos para processar os dados do controle selecionado e exibe as propriedades dos controles.Observe que AutomationUId é denominado buttonA.
Nas propriedades do controle, escolha a seta no canto superior esquerdo para expandir o Mapa de Controles de IU.Observe que UIStartButton1 está selecionado.
Na barra de ferramentas, escolha Adicionar controle para o Mapa de Controles de IU.
O status na parte inferior da janela verifica a ação exibindo O controle selecionado foi adicionado ao mapa de controles de IU.
No UIMap – Construtor de Teste de IU Codificado, escolha Gerar Código.
O Construtor de Teste de IU Codificado - Gerar Código aparece com uma nota indicando que nenhum novo método é necessário e que o código será gerado somente para as alterações no mapa de controles de IU.
Escolha Gerar.
Feche o SimpleWPFApp.exe.
Feche o UIMap – Construtor de Teste de IU Codificado.
O UIMap – Construtor de Teste de IU Codificado demora alguns segundos para processar as alterações do mapa de controles de IU.
No Gerenciador de Soluções, abra o arquivo UIMap.Designer.cs.
No arquivo UIMap.Designer.cs, localize a propriedade UIStartButton1.Observe que SearchProperties está definido como "buttonA":
public WpfButton UIStartButton1 { get { if ((this.mUIStartButton1 == null)) { this.mUIStartButton1 = new WpfButton(this); #region Search Criteria this.mUIStartButton1.SearchProperties[WpfButton.PropertyNames.AutomationId] = "buttonA"; this.mUIStartButton1.WindowTitles.Add("MainWindow"); #endregion } return this.mUIStartButton1; } }
Agora você pode modificar o teste de IU codificado para usar o controle recém-mapeado.Conforme indicado no procedimento anterior, se você quiser substituir métodos ou propriedades no teste de IU codificado, faça isso no arquivo UIMap.cs.
No arquivo UIMap.cs, adicione um construtor e especifique a propriedade SearchProperties da propriedade UIStartButton para usar a propriedade AutomationID com o valor "buttonA":
public UIMap() { this.UIMainWindowWindow.UIStartButton.SearchProperties[WpfButton.PropertyNames.AutomationId] = "buttonA"; }
No menu Compilação, escolha Compilar Solução.
No Gerenciador de Testes, execute CodedUITestMethod1.
Dessa vez, o teste de IU codificado conclui com sucesso todas as etapas do teste.Na janela Resultados do Teste, você verá o status de Aprovado.
Recursos externos
Vídeos
Laboratório prático
Perguntas frequentes
Perguntas frequentes sobre testes de IU codificados – 1
Perguntas frequentes sobre testes de IU codificados – 2
Fórum
Teste de automação da interface do usuário do Visual Studio (inclui CodedUI)
Consulte também
Conceitos
Verificando código pela Automação da Interface do Usuário
Configurações e plataformas compatíveis para testes de IU codificados e gravações de ações