O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.

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 instantâneos 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 pode ser executado para testar o app.

O Espresso Test Recorder grava testes com base no framework do Espresso Testing, uma API do AndroidX Test. A API Espresso 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 Como 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 (link inglês).

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 em que você quer gravar o teste. Se necessário, crie um novo Dispositivo virtual Android. Clique em OK.
  3. O Espresso Test Recorder aciona um build do projeto. 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 ainda não houve interação com o dispositivo, o painel principal apresenta a mensagem "No events recorded yet". Interaja com o 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. Ao 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 no momento.

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 no 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 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. 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 sendo editada 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ê pressionou o 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 será exibida.
  2. O Espresso Test Recorder atribuirá um nome exclusivo ao teste dentro do pacote correspondente, com base no nome da atividade iniciada. Use o campo de texto Test class name caso queira mudar o nome sugerido. Clique em Salvar.
    • 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 em que 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 (link inglês) 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 o local em que um teste seria salvo para o app de teste Notes (link inglês):
    • Se você estiver usando a visualização Android na janela, vá para java > com.example.username.appname (androidTest).
    • Se você estiver usando a visualização Project na janela, vá para 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 'testName'..
    • 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 um build completo do 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. Amostra de resultado na janela Run depois da execução local de um teste Espresso.

Para saber mais sobre programar configurações de execução de teste, leia a seção "Como 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. Dentro da cota diária gratuita do plano Spark, nenhuma cobrança é realizada para testar seu app com o Test Lab. Para executar testes Espresso com o Firebase Test Lab, crie um projeto do Firebase para o app e siga as instruções em Executar testes com o Firebase Test Lab no Android Studio.

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