Criar testes de IU com o Espresso Test Recorder

A ferramenta Espresso Test Recorder permite criar testes de IU para seu app sem precisar escrever códigos de teste. Ao registrar um cenário de teste, você pode gravar suas interações com um dispositivo e adicionar declarações para verificar elementos da IU em snapshots específicos do seu app. Em seguida, o Espresso Test Recorder usa a gravação salva para gerar automaticamente um teste de IU correspondente que você pode executar para testar o app.

O Espresso Test Recorder grava testes com base no framework do Espresso Testing, uma API do AndroidX Test. A Espresso API incentiva você a criar testes de IU concisos e confiáveis com base nas ações do usuário. Ao indicar expectativas, interações e declarações sem acessar diretamente as atividades e visualizações do app subjacente, essa estrutura evita que o teste seja instável e otimiza a velocidade de execução.

Desativar animações no dispositivo de teste

Antes de usar o Espresso Test Recorder, desative as animações no dispositivo de teste para evitar resultados inesperados. Siga as instruções de configuração do Espresso na página Testar a IU de um único app. Não é preciso definir manualmente uma referência de dependência para a biblioteca do Espresso, uma vez que o Test Recorder faz isso automaticamente quando você salva uma gravação. Essas etapas só precisam ser seguidas uma vez para cada projeto.

Gravar um teste Espresso

Os testes Espresso consistem em dois componentes principais: interações e declarações da IU em elementos View. As interações da IU incluem ações de toque e digitação que uma pessoa pode usar para interagir com o app. As declarações verificam a existência ou o conteúdo de elementos visuais na tela. Por exemplo, um teste Espresso para o app de teste Notes pode incluir interações de IU para clicar em um botão e escrever uma nova anotação, mas usaria declarações para verificar a existência do botão e o conteúdo da anotação.

Esta seção explica como criar esses dois componentes de teste usando o Espresso Test Recorder e como salvar sua gravação concluída para gerar o teste.

Gravar interações de IU

Para começar a gravar um teste com o Espresso Test Recorder, faça o seguinte:

  1. Clique em Run > Record Espresso Test.
  2. Na janela Select Deployment Target, escolha o dispositivo onde você quer gravar o teste. Se necessário, crie um novo Dispositivo virtual Android. Clique em OK.
  3. O Espresso Test Recorder aciona uma compilação do seu projeto, e o app precisa ser instalado e iniciado para que o Espresso Test Recorder permita que você interaja com ele. A janela Record Your Test aparece depois que o app é iniciado e, como você ainda não interagiu com o dispositivo, o painel principal apresenta a mensagem "No events recorded yet". Interaja com seu dispositivo para iniciar o registro de eventos, como as ações de toque e digitação.

Observação: antes de começar a registrar interações, é possível que você veja uma caixa de diálogo com a mensagem "Waiting for Debugger" ou "Attaching Debugger" no dispositivo. O Espresso Test Recorder usa o depurador para registrar eventos de IU. Quando o depurador for conectado, a caixa de diálogo fechará automaticamente. Não pressione Force Close.

As interações gravadas serão exibidas no painel principal, na janela Record Your Test, conforme mostrado na figura 1 abaixo. Quando você executar o teste, o teste Espresso tentará realizar essas ações na mesma ordem.

Figura 1. Janela Record Your Test com interações de IU registradas.

Adicionar declarações para verificar elementos de IU

Declarações verificam a existência ou o conteúdo de um elemento View por meio de três tipos principais:

  • text is: verifica o conteúdo de texto do elemento View selecionado.
  • exists: verifica se o elemento View está presente na hierarquia View exibida na tela no momento.
  • does not exist: verifica se o elemento View não está presente na hierarquia View atual.

Para adicionar uma declaração ao seu teste, faça o seguinte:

  1. Clique em Add Assertion. Uma caixa de diálogo Screen Capture é exibida enquanto o Espresso coleta a hierarquia da IU e outras informações sobre o estado atual do app. A caixa de diálogo é fechada automaticamente depois que o Espresso faz a captura da tela.
  2. Um layout da tela atual é exibido em um painel à direita da janela Record Your Test. Para selecionar o elemento View em que a declaração será criada, clique no elemento na captura de tela ou use o primeiro menu suspenso na caixa Edit assertion, na parte inferior da janela. O objeto View selecionado é destacado em uma caixa vermelha.
  3. Selecione a declaração que você quer usar em um segundo menu suspenso na caixa Edit assertion. O Espresso preenche o menu com declarações válidas para o elemento View selecionado.
    • Se você escolher a declaração "text is", o Espresso inserirá automaticamente o texto presente no momento no elemento View selecionado. Você pode editar o texto para que ele corresponda à declaração que você quer usar no campo de texto da caixa Edit assertion.
  4. Clique em Save and Add Another para criar outra declaração ou clique em Save Assertion para fechar os painéis.

A captura de tela na figura 2 mostra a declaração "text is" sendo criada para verificar se o título da anotação é "Happy Testing!":

Figura 2. A caixa Edit assertion depois que um elemento View é selecionado (em vermelho).

Ao criar uma declaração, você pode continuar interagindo com o app, mesmo com os painéis de declaração ainda abertos na janela Record Your Test. O Espresso Test Recorder continuará registrando suas ações, mas a declaração que você está editando aparecerá antes dessas interações quando ela for salva. A captura de tela da declaração também mantém o layout que o dispositivo ou emulador tinha no momento que você clicou no botão Add Assertion.

Salvar uma gravação

Quando terminar de interagir com o app e adicionar declarações, use as etapas a seguir para salvar sua gravação e gerar o teste Espresso:

  1. Clique em Complete Recording. A janela Pick a test class name for your test é exibida.
  2. O Espresso Test Recorder atribui um nome exclusivo ao teste dentro do pacote correspondente com base no nome da atividade iniciada. Use o campo de texto Test class name se quiser alterar o nome sugerido. Clique em Save.
    • Se você não adicionou as dependências do Espresso ao seu app, uma caixa de diálogo Missing Espresso dependencies será exibida quando você tentar salvar o teste. Clique em Yes para adicionar as dependências automaticamente ao arquivo build.gradle.
  3. O arquivo abre automaticamente depois de ser gerado pelo Espresso Test Recorder e o Android Studio mostra a classe de teste selecionada na janela Project do ambiente de desenvolvimento integrado.
    • O local onde o teste é salvo depende do local do seu teste de instrumentação raiz, bem como do nome do pacote da atividade iniciada. Por exemplo, os testes do app de teste Notes são salvos na pasta src > androidTest > java > com.example.username.appname do módulo do app em que você gravou o teste.

Executar um teste Espresso localmente

Para executar um teste Espresso, use a janela Project , à esquerda do ambiente de desenvolvimento integrado do Android Studio:

  1. Abra a pasta do módulo do app adequada e navegue para o teste que você quer executar. O local do teste depende do local do seu teste de instrumentação raiz e do nome do pacote da atividade iniciada. Os exemplos a seguir demonstram onde um teste seria salvo para o app de teste Notes:
    • Se você estiver usando a visualização Android na janela, navegue até java > com.example.username.appname (androidTest).
    • Se você estiver usando a visualização Project na janela, navegue até src> androidTest > java > com.example.username.appname dentro da pasta do módulo.
  2. Clique com o botão direito no teste e depois em Run nomedoTeste.
    • Como alternativa, você pode abrir o arquivo de teste e clicar com o botão direito na classe ou método de teste gerado. Saiba mais sobre a execução de testes na página Testar seu app.
  3. Na janela Select Deployment Target, escolha o dispositivo em que você quer executar o teste. Se necessário, crie um novo Dispositivo virtual Android. Clique em OK.

Monitore o andamento do seu teste na janela Run na parte inferior do ambiente de desenvolvimento integrado. O Android Studio executa uma versão completa do seu projeto e abre uma guia com o nome do teste na janela Run, como mostrado na figura 3. Você pode verificar se o teste foi aprovado ou reprovado nessa guia, além do tempo necessário para a execução do teste. Quando o teste é concluído, a guia registra a mensagem "Tests ran to completion”.

Figura 3. Exemplo de resultado na janela Run depois da execução local de um teste Espresso.

Para aprender a programar configurações de execução de teste, leia a seção "Definir uma configuração de teste para uma classe ou método" em Criar e editar configurações de execução/depuração.

Executar um teste Espresso com o Firebase Test Lab para Android

Você pode usar testes gerados pelo Espresso Test Recorder com o Firebase Test Lab para testar seu app na nuvem em centenas de configurações de dispositivo. Você não paga nada para testar seu app no Test Lab dentro da cota gratuita diária do plano Spark. Para executar testes Espresso com o Firebase Test Lab, crie um projeto do Firebase para seu app e siga as instruções em Executar testes com o Firebase Test Lab no Android Studio.

Figura 4. Exemplo de resultado na janela Run depois da execução de um teste com o Firebase Test Lab em vários dispositivos.