Walkthrough: Creating, Editing and Maintaining a Coded UI Test
Nessa explicação passo a passo, você criará um simples aplicativo do Windows Presentation Foundation (WPF) demonstrar como criar, editar, e manter um teste codificado de interface do usuário.A explicação passo a passo fornece soluções para corrigir os testes que foram quebrados por vários problemas de tempo e controlam refatoração.
Pré-requisitos
Para essa explicação passo a passo você precisará:
- Visual Studio Ultimate ou Visual Studio Premium.
Crie um aplicativo WPF simples
No menu File, aponte para New e clique Project.
A caixa de diálogo Novo Projeto é exibida.
No painel de Instalado , expanda Visual C#, selecione Janelas.
Anterior do painel médio, verifique que a lista suspensa do framework de destino está definida para o .NET Framework 4.5.
No painel médio, selecione o modelo de Aplicativo WPF .
Na caixa de texto Nome , digite SimpleWPFApp.
Escolha uma pasta onde você salvar o projeto.Na caixa de texto Local , digite o nome da pasta.
Escolha OK.
O WPF designer para Visual Studio abre e exibe MainWindow do projeto.
Se a caixa de ferramentas não está atualmente aberto, abra-o.Escolha o menu de Modo de Visualização , escolha Caixa de Ferramentas.
Na seção de Todos os Controles do WPF , arraste Botão, CheckBox e o controle de Barra de Progresso em MainWindow na superfície de design.
Selecione o controle botão.Na janela propriedades, altere o valor para a propriedade de Conteúdo de Botão para iniciar.
Selecione o controle ProgressBar.Na janela propriedades, altere o valor para a propriedade de Máximo de 100 como 1000.
Selecione o controle caixa de seleção.Na janela propriedades, desmarque a propriedade de IsEnabled .
Clique duas vezes no controle button para adicionar um evento escolha.
O MainWindow.xmal.cs é exibido no editor de códigos com o cursor no novo evento de button1_Choose.
Na parte superior da classe MainWindow, adicione um representante.O representante será usado para a barra de progresso.Para adicionar o representante, adicione o seguinte código:
private delegate void ProgressBarDelegate( System.Windows.DependencyProperty dp, Object value);
No método de button1_Choose, adicione o seguinte código:
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;
Verifique as sequências de aplicativo WPF corretamente
No menu de Depurar , em Iniciar Depuração selecione ou aperte F5.
Escolha Iniciar.
Em alguns segundos, a barra de progresso deve ser 100% completo.O controle de caixa de seleção está ativado.
Próximo SimpleWPFApp.
Criar e executar um teste codificado de interface de usuário para SimpleWPFApp
No solution Explorer, clique com o botão direito do mouse na solução, escolha Adicionar e selecione Novo Projeto.
A caixa de diálogo Adicionar Novo Projeto é exibida.
No painel de Instalado , expanda Visual C#, selecione Testar.
No painel médio, selecione o modelo de Projeto de teste de Interface de Usuário codificado .
Escolha OK.
No solution Explorer, o novo projeto codificado de teste de interface de usuário CodedUITestProject1 chamado é adicionado à sua solução.
A caixa de diálogo Gerar Código para Teste de IU Codificado aparece.
Selecione a opção para Registrar ações, edite o mapa da interface do usuário ou adicionar asserções e escolha OK.
UIMap – construtor codificado de teste de interface de usuário aparece, e a janela do Visual Studio é minimizada.
Para obter mais informações sobre as opções na caixa de diálogo, consulte Criando teste codificados de interface de usuário.
Localize e executar o aplicativo de SimpleWPFApp que você criou anteriormente.Por padrão, o aplicativo será localizado em C:\Users\<username>\ documents \ Visual Studio 2012 \ projects \ \ SimpleWPFApp SimpleWPFApp \ bin \ debug \ SimpleWPFApp.exe
Crie um atalho da área de trabalho para o aplicativo de SimpleWPFApp.Clique com o botão direito do mouse 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 alterar teste codificados de interface de usuário para seu aplicativo porque permite que você para iniciar rapidamente o aplicativo.Você não tem que navegar até ela.Você precisará executar novamente o aplicativo nessa explicação passo a passo.
Escolha Iniciar Gravação no UIMap – construtor codificado de teste de interface do usuário.Em alguns segundos, o construtor codificado de teste de interface do usuário estará pronto.
Execução SimpleWPFApp.exe usando o atalho da área de trabalho.
No SimpleWPFApp, escolha Iniciar.
Em alguns segundos, a barra de progresso deve ser 100% completo.O controle de caixa de seleção está ativado.
Selecione a caixa para o controle de caixa de seleção.
Feche o aplicativo de SimpleWPFApp.
No UIMap - o construtor codificado de teste de interface do usuário, escolha Gerar código.
O nome do método digite SimpleAppTest e escolha Adicionar e gere.Em alguns segundos, o teste codificado de interface do usuário aparece e é adicionado à solução.
Feche o UIMap – construtor codificado de teste de interface do usuário.
O arquivo de CodedUITest1.cs aparece no editor de códigos.
Executar o teste codificado de interface de usuário
No arquivo de CodedUITest1.cs, localize o método de CodedUITestMethod , clique com o botão direito do mouse e selecione Executar Testes.
Quando os ensaios codificados de interface do usuário, o SimpleWPFApp são visíveis.Resulta as etapas que você fez no procedimento anterior.No entanto, quando o teste tenta selecione a caixa de seleção para o controle de caixa de seleção, a janela de resultados de teste mostra a que o teste falha.Isso ocorre porque tenta de teste para selecione a caixa de seleção mas não são cientes que o controle de caixa de seleção está desativado até que a barra de progresso é 100% completo.Você pode corrigir isso e problemas semelhantes usando vários métodos de UITestControl.WaitForControlXXX() que estão disponíveis para testar codificado de interface do usuário.O procedimento a seguir demonstrará usando o método WaitForControlEnabled() para corrigir o problema que causou este teste falhar.Para obter mais informações, consulte Making Coded UI Tests Wait For Specific Events During Playback.
Editar e execute novamente o teste codificado de interface de usuário
Na janela de resultados de teste, clique com o botão direito do mouse no teste falha e selecione Exibir Detalhes de Resultados de Testes.
O CodedUITestMethod1 [] resultados é exibido.
Na seção de Rastreamento de Pilha de Erro , escolha o primeiro link ao lado de TestProject1.UIMap.SimpleAppTest ()().
O arquivo de UIMap.Designer.cs abre com o ponto de erro no código realçado:
// Select 'CheckBox' check box uICheckBoxCheckBox.Checked = this.SimpleAppTestParams.UICheckBoxCheckBoxChecked;
Para corrigir esse problema, você pode fazer o teste codificado de interface do usuário esperar o controle de caixa de seleção para ser ativado antes de continuar sobre a essa linha usando o método WaitForControlEnabled() .
Cuidado Não modifique o arquivo de UIMap.Designer.cs.Todas as alterações de código que você fez no arquivo de UIMapDesigner.cs serão substituídas cada vez que você gerar código usando o UIMap - construtor codificado de teste de interface do usuário.Se você tem que alterar um método identificado, você deve copie o arquivo de UIMap.cs e renomeá-lo.O arquivo de UIMap.cs pode ser usado para substituir métodos e propriedades em UIMapDesigner.cs arquivo.Você deve remover a referência para o método original no arquivo codificado de UITest.cs e substitua com o nome do método renomeado.
No solution Explorer, localize UIMap.uitest em seu projeto codificado de teste de interface do usuário.
Abra o menu de atalho para UIMap.uitest e escolha Abrir.
O teste codificado de interface do usuário é exibido no editor codificado de teste de interface do usuário.Agora você pode exibir e editar o teste codificado de interface do usuário.
No painel de Ação de interface de usuário , selecione o método de teste que você deseja mover para o arquivo de UIMap.cs ou de UIMap.vb para facilitar a funcionalidade de código personalizado que não será substituída quando o código de teste é recompilado.
Escolha o botão de Mova o código na barra de ferramentas codificado do editor de teste de interface do usuário.
Uma caixa de diálogo Microsoft Visual Studio é exibida.Adverte-o que o método será movida do arquivo de UIMap.uitest para o arquivo de UIMap.cs e que você não será capaz de editar o método usando o editor codificado de teste de interface do usuário.Escolha Sim.
O método de teste é removido do arquivo de UIMap.uitest e não exibido no painel ações de interface do usuário.Para editar o arquivo movido de teste, abra o arquivo de UIMap.cs de soluções.
Na barra de ferramentas Visual Studio , escolha Salvar.
Atualizações para o método de teste são salvas no arquivo de UIMap.Designer.
Cuidado Uma vez que você mover o método, você pode não editá-lo usando o editor codificado de teste de interface do usuário.Você deve adicionar o código personalizado e mantê-lo usando o editor de códigos.
Renomeie o método de SimpleAppTest() a ModifiedSimpleAppTest()
Adicione a seguinte declaração de usar ao arquivo:
using Microsoft.VisualStudio.TestTools.UITesting.WpfControls;
Adicione o seguinte método de WaitForControlEnabled() antes que ofende da linha de código identificado anteriormente:
uICheckBoxCheckBox.WaitForControlEnabled(); // Select 'CheckBox' check box uICheckBoxCheckBox.Checked = this.SimpleAppTestParams.UICheckBoxCheckBoxChecked;
No arquivo de CodedUITest1.cs, localize o método de CodedUITestMethod e comente out renomear uma referência para o método original de SimpleAppTest () e substituia com o 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 Build, escolha Build Solution.
Clique com o botão direito do mouse no método de CodedUITestMethod e selecione Executar Testes.
Esta vez o teste codificado de interface do usuário concluída com sucesso todas as etapas no teste e Passou é exibido na janela de resultados de teste.
Refactor um controle em SimpleWPFApp
No arquivo de MainWindow.xaml, no designer, selecione o controle botão.
Na parte superior da janela propriedades, selecione o valor botão1 ao lado de Botão e altere o valor para o buttonA.
No menu Build, escolha Build Solution.
No menu de Testar , selecione Janelas e clique em Modo de Teste.
Em CodedUITestMethod1 , selecione sob a coluna de Nome do Teste e clique em Executar seleção na barra de ferramentas.
O teste falha porque o teste codificado de interface do usuário não pode permanecer o controle de botão que foi originalmente mapeado no UIMap como button1.Refatoração pode afetar teste codificados de interface de usuário dessa maneira.
Na janela de resultados de teste, clique com o botão direito do mouse no teste falha e selecione Exibir Detalhes de Resultados de Testes.
O CodedUITestMethod1 resultados [] aparece.
Na seção de Rastreamento de Pilha de Erro , escolha o primeiro link ao lado de TestProject1.UIMpa.SimpleAppTest ()().
O arquivo de UIMap.Designer.cs abre.O ponto de erro é realçado no código:
// Choose 'Start' button Mouse.Click(uIStartButton, new Point(27, 10));
Observe que a linha de código anteriormente neste procedimento está usando UiStartButton, que é o nome de UIMap antes de estado refactored.
Para corrigir o problema, você pode adicionar o controle refactored ao UIMap usando o construtor codificado de teste de interface do usuário.Você pode atualizar o código de teste para usar o código, como demonstrado no procedimento a seguir.
Controle e edição de Refactored de mapa e executado novamente o teste codificado de interface de usuário
No arquivo de CodedUITest1.cs, no método de CodedUITestMethod1 () (), clique com o botão direito do mouse, selecione Gerar Código para Teste de IU Codificado e escolha Use o construtor codificado de teste de interface de usuário.
O UIMap – o construtor codificado de teste de interface do usuário aparece.
Usando o atalho da área de trabalho você criou anteriormente, execute o aplicativo de SimpleWPFApp que você criou anteriormente.
No UIMap – o construtor codificado de teste de interface do usuário, arrastar a ferramenta de crosshair para o botão de Iniciar no SimpleWPFApp.
O botão de Iniciar é incluído em uma caixa azul e o construtor codificado de teste de interface de usuário tem alguns segundos para processar os dados para o controle selecionado e exibe as propriedades dos controles.Observe que AutomationUId é chamado buttonA.
Nas propriedades para o controle, escolha a seta no canto superior esquerdo para expandir o mapa de controle da interface do usuário.Observe que UIStartButton1 está selecionado.
Na barra de ferramentas, escolha Adicionar o controle ao mapa de controle de interface de usuário.
O status na parte inferior da janela verifica a ação exibindo O controle selecionado foi adicionado ao mapa de controle de interface de usuário.
No UIMap – o construtor codificado de teste de interface do usuário, escolha Gerar código.
O construtor codificado de teste de interface de usuário – gerar código parece com uma nota que indica nenhum novo método é necessário e que o código será gerado apenas para as alterações no mapa de controle da interface do usuário.
Escolha Gerar.
Feche SimpleWPFApp.exe.
Feche UIMap – construtor codificado de teste de interface do usuário.
O UIMap – o construtor codificado de teste de interface de usuário tem alguns segundos para processar as alterações do mapa de controle da interface do usuário.
No solution Explorer, abra o arquivo de UIMap.Designer.cs.
No arquivo de UIMap.Designer.cs, abaixo do construtor da classe gerada UIMainWindowde código, expandir a região de Propriedades .Observe que a propriedade de public WpfButton UIStartButton1 foi adicionada.
Na propriedade UIStartButton1, expanda os critérios da região de pesquisa.Observe que SearchProperties é 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 alterar o teste codificado de interface de usuário para usar o controle recentemente mapeado.Como indicado no procedimento anterior se você deseja substituir quaisquer métodos ou propriedades no teste codificado de interface do usuário, você deve fazê-lo no arquivo de UIMap.cs.
No arquivo de UIMap.cs, adicione um construtor e especificar a propriedade de SearchProperties de propriedade de UIStartButton para usar a propriedade de AutomationID com um valor de "buttonA":
public UIMap() { this.UIMainWindowWindow.UIStartButton.SearchProperties[WpfButton.PropertyNames.AutomationId] = "buttonA"; }
No menu Build, escolha Build Solution.
No modo de teste, selecione CodedUITestMethod1 na coluna de Nome do Teste , na barra de ferramentas, clique em Executar seleção.
Desta vez, o teste codificado de interface do usuário concluída com sucesso todas as etapas em teste.Nos resultados do teste a janela, você verá um status de Passou.
Recursos externos
Vídeos
Mãos em laboratório
FAQ
Teste codificados Perguntas Frequentes de interface de usuário - 1
Teste codificados Perguntas Frequentes -2 de interface de usuário
Fórum
Teste de automação do Visual Studio interface do usuário (inclui CodedUI)
Consulte também
Conceitos
Verificando o código usando testes de interface do usuário codificada
Supported Configurations and Platforms for Coded UI Tests and Action Recordings