Friday 18 August 2017

Uiautomator Waitforexists


Estou começando a estudar UIAutomator no Android. Eu criei um projeto Poc simples, dentro disso, há poucos elementos. Um botão e um editarTexto. O comportamento é bastante simples: quando eu pressiono o botton, a mensagem escrita no editText aparece em um snackBar. Agora eu quero fazer dois testes simples: veja se a barra de lixa corretamente aparece veja se a mensagem editTest está corretamente relatada na barra de lanche Para o primeiro ponto eu fiz dessa maneira: Isso é o que eu estou observando a ação do snackbars para verificar se a lanchonete é Aberto corretamente. Existem melhores formas de fazer isso. Desta forma, se houver mais elementos chamados da mesma maneira da ação do snackbars, terei um problema. Para o segundo ponto, não encontro uma maneira de testá-lo. Eu tenho que usar apenas uiAutomator e não Espresso :) Obrigado a todos:) Biblioteca de Suporte de Testes Neste documento A Biblioteca de Suporte de Teste do Android oferece uma ampla estrutura para testar aplicativos Android. Esta biblioteca fornece um conjunto de APIs que permitem que você crie e execute rapidamente o código de teste para seus aplicativos, incluindo JUnit 4 e testes de interface de usuário funcional (UI). Você pode executar testes criados usando essas APIs do Android Studio IDE ou da linha de comando. A biblioteca do Android Support Testing está disponível através do Android SDK Manager. Para obter mais informações, consulte Testing Support Library Setup Esta página fornece informações sobre quais ferramentas são fornecidas na Biblioteca de Suporte de Teste do Android, como usá-las no seu ambiente de teste e informações sobre lançamentos da biblioteca. Testando Recursos de Biblioteca de Suporte A Biblioteca de Suporte de Teste do Android inclui as seguintes ferramentas de automação de teste: AndroidJUnitRunner. Corredor de teste compatível com JUnit 4 para o Espresso Android. Estrutura de teste UI adequada para testes de UI funcionais dentro de um UI Automator de aplicativo. Estrutura de teste de UI adequada para testes de UI funcionais de aplicativos cruzados em sistemas e aplicativos instalados. AndroidJUnitRunner A classe AndroidJUnitRunner é um corredor de teste JUnit que permite que você execute JUnit 3 ou JUnit 4 classes de teste de estilo em dispositivos Android, incluindo aqueles que usam o Espresso e UI Automator Estruturas de teste. O corredor de teste lida com o carregamento de seu pacote de teste e o aplicativo sob teste em um dispositivo, executando seus testes e relatando os resultados do teste. Esta classe substitui a classe InstrumentationTestRunner, que só suporta testes JUnit 3. Os principais recursos deste corretor de teste incluem: Requer Android 2.2 (API nível 8) ou superior. Suporte JUnit O corredor de teste é compatível com seus testes JUnit 3 e JUnit 4 (até JUnit 4.10). No entanto, você deve evitar misturar o código de teste JUnit 3 e JUnit 4 no mesmo pacote, pois isso pode causar resultados inesperados. Se você estiver criando uma classe de teste JUnit 4 instrumentada para ser executada em um dispositivo ou emulador, sua classe de teste deve ser prefixada com a anotação RunWith (AndroidJUnit4.class). O trecho de código a seguir mostra como você pode escrever um teste JUnit 4 instrumentado para validar que a operação de adicionar na classe CalculatorActivity funciona corretamente. Acesso a informações de instrumentação Você pode usar a classe InstrumentationRegistry para acessar informações relacionadas à sua execução de teste. Esta classe inclui o objeto Instrumentação, o objeto de Contexto do aplicativo alvo, o objeto Context do aplicativo de teste e os argumentos da linha de comando passados ​​para o teste. Esses dados são úteis quando você está escrevendo testes usando o framework UI Automator ou ao escrever testes que possuem dependências nos objetos Instrumentation ou Context. Filtragem de teste Nos testes JUnit 4.x, você pode usar as anotações para configurar o teste executado. Este recurso minimiza a necessidade de adicionar código de referência e código condicional em seus testes. Além das anotações padrão suportadas pelo JUnit 4, o test runner também oferece suporte a anotações específicas do Android, incluindo: RequiresDevice. Especifica que o teste deve ser executado somente em dispositivos físicos, não em emuladores. SdkSupress. Suprime o teste de execução em um nível de API de Android inferior ao nível dado. Por exemplo, para suprimir os testes em todos os níveis de API inferiores a 18 a partir da execução, use a anotação SDKSupress (minSdkVersion18). 64SmallTest. 64MediumTest. E 64LargeTest. Classifique por quanto tempo um teste deve ser executado e, consequentemente, com que frequência você pode executar o teste. Testes de corte O corredor de teste suporta dividir um único conjunto de testes em vários fragmentos. Para que você possa facilmente executar testes pertencentes ao mesmo fragmento juntos como um grupo, na mesma instância de instrumentação. Cada fragmento é identificado por um número de índice. Ao executar testes, use a opção - e numShards para especificar o número de fragmentos separados para criar e a opção - e shardIndex para especificar qual fragmento se executar. Por exemplo, para dividir o conjunto de testes em 10 fragmentos e executar apenas os testes agrupados no segundo fragmento, use o seguinte comando: Para saber mais sobre o uso deste corredor de teste, consulte a referência da API. A estrutura de teste Espresso fornece um conjunto de APIs para criar testes UI para testar os fluxos de usuários dentro de um aplicativo. Essas APIs permitem que você escreva testes automatizados de UI que são concisos e que funcionam de forma confiável. O Espresso é adequado para a escrita de testes automatizados de caixa branca, onde o código de teste utiliza os detalhes do código de implementação do aplicativo sob teste. Os principais recursos da estrutura de teste do Espresso incluem: APIs flexíveis para compatibilidade de exibição e adaptador em aplicativos de destino. Para obter mais informações, consulte Exibir correspondência. Um extenso conjunto de APIs de ação para automatizar interações de UI. Para obter mais informações, consulte APIs de ação. Sincronização de linha UI para melhorar a confiabilidade do teste. Para obter mais informações, consulte a sincronização de linha UI. Requer Android 2.2 (API nível 8) ou superior. Ver correspondência O método Espresso. onView () permite acessar um componente UI no aplicativo alvo e interagir com ele. O método aceita um argumento do Matcher e procura a hierarquia de exibição para localizar uma instância de visualização correspondente que atenda alguns critérios determinados. Você pode refinar as pesquisas especificando critérios como: O nome da classe da exibição A descrição do conteúdo da visão O R. id da exibição Texto exibido na exibição Por exemplo, para segmentar um botão que tenha o valor ID do meu botão. Você pode especificar um parecido assim: se a pesquisa for bem-sucedida, o método) onView () retorna uma referência que permite executar ações do usuário e testar asserções contra a exibição de destino. Correspondência de adaptador Em um layout do AdapterView, o layout é dinamicamente preenchido com vistas de crianças em tempo de execução. Se a visualização de destino estiver dentro de um layout subclassado do AdapterView (como um ListView ou GridView), o método onView () pode não funcionar porque apenas um subconjunto das visualizações de layouts pode ser carregado na hierarquia de exibição atual. Em vez disso, use o método) Espresso. onData () para acessar um elemento de exibição de destino. O método Espresso. onData () retorna uma referência que permite executar ações do usuário e testar asserções contra os elementos em um AdapterView. APIs de ação Normalmente, você testa um aplicativo executando algumas interações do usuário contra a interface do usuário de aplicativos. Você pode automatizar facilmente essas ações em seu teste usando a API ViewActions. Você pode executar tais interações UI como: Ver cliques Swipes Pressionar tecla e botão Digitar texto Abrir um link Por exemplo, para simular a inserção de um valor de seqüência e pressionar um botão para enviar o valor, você pode escrever um script de teste automatizado como este. Os métodos ViewInteraction. perform () e DataInteraction. perform () tomam um ou mais argumentos ViewAction e executam as ações na ordem fornecida. UI thread synchronization Testes em dispositivos Android podem falhar aleatoriamente devido a problemas de tempo. Este problema de teste é referido como flakiness de teste. Antes do Espresso, a solução alternativa era inserir um período de tempo de espera ou tempo limite suficientemente longo em um teste ou adicionar código para continuar tentando a operação com falha. A estrutura de teste do Espresso processa a sincronização entre a Instrumentação e a thread UI, que remove a necessidade das soluções temporárias anteriores e garante que suas ações e asserções de teste funcionem de forma mais confiável. UI Automator A estrutura de teste UI Automator fornece um conjunto de APIs para criar testes de UI que executam interações em aplicativos de usuário e aplicativos de sistema. As APIs do UI Automator permitem que você execute operações, como abrir o menu Configurações ou o iniciador de aplicativos em um dispositivo de teste. A estrutura de teste da UI Automator é adequada para a escrita de testes automatizados de caixa preta, onde o código de teste não depende dos detalhes de implementação interna do aplicativo de destino. Os principais recursos da estrutura de teste do UI Automator incluem: Um visualizador para inspecionar hierarquia de layout. Para obter mais informações, consulte UI Automator Viewer. Uma API para recuperar informações de estado e executar operações no dispositivo alvo. Para obter mais informações, consulte Acesso ao estado do dispositivo. APIs que suportam testes UI de aplicativos cruzados. Para obter mais informações, consulte API da UI Automator. Requer Android 4.3 (nível API 18) ou superior. UI Automator Viewer A ferramenta uiautomatorviewer fornece uma GUI conveniente para digitalizar e analisar os componentes UI atualmente exibidos em um dispositivo Android. Você pode usar essa ferramenta para inspecionar a hierarquia de layout e exibir as propriedades dos componentes de UI visíveis no primeiro plano do dispositivo. Esta informação permite que você crie testes mais finos usando UI Automator, por exemplo, criando um seletor UI que corresponda a uma propriedade visível específica. A ferramenta uiautomatorviewer está localizada no diretório ltdroid-sdkgttools. Acesso ao estado do dispositivo A estrutura de teste do UI Automator fornece uma classe UiDevice para acessar e executar operações no dispositivo no qual o aplicativo alvo está sendo executado. Você pode chamar seus métodos para acessar as propriedades do dispositivo, como orientação atual ou tamanho de exibição. A classe UiDevice também permite que você execute ações como: Alterar a rotação do dispositivo Pressionar um botão D-pad Pressione os botões Voltar, Início ou Menu Abrir a sombra da notificação Tire uma captura de tela da janela atual Por exemplo, para simular um botão Início pressione , Ligue para o método UiDevice. pressHome (). APIs UI Automator As APIs UI Automator permitem que você escreva testes robustos sem precisar saber sobre os detalhes de implementação do aplicativo que você está segmentando. Você pode usar essas APIs para capturar e manipular componentes de UI em vários aplicativos: UiCollection. Enumera elementos de UI de contêineres para fins de contagem ou segmentação de sub-elementos pelo seu texto visível ou propriedade de descrição de conteúdo. UiObject. Representa um elemento UI visível no dispositivo. UIScrollable. Fornece suporte para pesquisar itens em um contêiner UI rolável. UiSelector. Representa uma consulta para um ou mais elementos de UI de destino em um dispositivo. Configurador. Permite configurar parâmetros-chave para a execução de testes do UI Automator. Por exemplo, o seguinte código mostra como você pode escrever um script de teste que traz o iniciador de aplicativos padrão no dispositivo: Para saber mais sobre como usar o UI Automator, consulte a referência da API e Testando UI para treinamento de vários aplicativos. Configuração da Biblioteca de Suporte de Testes O pacote da Biblioteca de Suporte de Teste do Android está incluído com a versão mais recente do Repositório de Suporte do Android, que você pode obter como um download suplementar através do Gerenciador de SDK do Android. Para baixar o Repositório de suporte do Android através do SDK Manager: Inicie o Gerenciador de SDK do Android. Na janela do SDK Manager, vá até o final da lista de Pacotes, encontre a pasta Extras e, se necessário, expanda para mostrar seu conteúdo. Selecione o item do Android Support Repository. Clique nos pacotes Instalar. botão. Após o download, a ferramenta instala os arquivos do Repositório de Suporte para o diretório SDK do Android existente. Os arquivos da biblioteca estão localizados no seguinte subdiretório do seu SDK: diretório ltsdkgtextrasandroidm2repository. As classes da Biblioteca de Suporte do Android Testing estão localizadas no pacote android. support. test. Para usar a Biblioteca de Suporte do Teste do Android no seu projeto Gradle, adicione essas dependências em seu arquivo build. gradle: Para configurar o AndroidJUnitRunner como o corredor de instrumentação de teste padrão no seu projeto Gradle, especifique essa dependência no arquivo build. gradle: É altamente recomendável Que você usa a Biblioteca de Suporte Android Testing junto com o Android Studio IDE. O Android Studio oferece recursos que suportam o desenvolvimento de testes, tais como: Sistema de compilação flexível baseado em Gradle que oferece suporte ao gerenciamento de dependências para seu código de teste Estrutura de projeto único para conter sua unidade e código de teste instrumentado juntamente com o código-fonte do seu aplicativo Suporte para implantação e execução de testes em Dispositivos virtuais ou físicos, a partir de uma linha de comando ou interface gráfica do usuário Para obter mais informações sobre o Android Studio e baixá-lo, consulte Baixar Android Studio e SDK Tools. Obtenha dicas de amp de notícias Inscreva-se na newsletter Desenvolvedores do Android no YouTube Desenvolvedores do Android no Google Android Developers no Twitter

No comments:

Post a Comment