Criar testes de IU com o Espresso Test Recorder

A ferramenta Espresso Test Recorder permite que você crie testes de IU para seu aplicativo sem precisar escrever códigos de teste. Ao gravar um cenário de teste, você pode gravar as interações com um dispositivo e adicionar declarações para verificar elementos da IU em pontos específicos do seu aplicativo. Depois, o Espresso Test Recorder coleta a gravação salva e gera um teste de IU correspondente automaticamente que você pode executar para testar seu aplicativo.

O Espresso Test Recorder cria testes com base na biblioteca Espresso Testing, uma API da Biblioteca de suporte de testes do Android. 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 aplicativo subjacente, essa estrutura evita que o teste seja instável e otimiza a velocidade de execução do teste.

Desativar animações no seu dispositivo de teste

Antes de usar o Espresso Test Recorder, certifique-se de desativar as animações no seu dispositivo de teste para evitar resultados inesperados. Siga as instruções de configuração do Espresso na página Teste de IU para um aplicativo, mas observe que não é preciso definir uma referência de dependência manualmente na biblioteca do Espresso porque 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 do Espresso consistem em dois componentes principais: Interações e declarações de IU em elementos View. As interações de IU incluem ações de toque e digitação que uma pessoa possa usar para interagir com seu aplicativo. As declarações verificam a existência ou o conteúdo de elementos visuais na tela. Por exemplo, um teste Escrever para o aplicativo de teste Notes pode incluir interações de IU para clique em um botão e escrever uma nova anotação, mas usando declarações para verificar a existência do botão e o conteúdo da anotação.

Esta seção abordará como criar esses dois componentes de teste usando o Espresso Test Recorder e como salvar sua gravação completa 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 no qual você deseja gravar o teste. Se necessário, crie um novo Android Virtual Device. Clique em OK.
  3. O Espresso Test Recorder aciona uma compilação do seu projeto e o aplicativo deve 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 aplicativo é 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 começar a registrar eventos como ações de toque e digitação.

Observação: antes de poder começar a registrar interações, você poderá ver uma caixa de diálogo com a mensagem "Waiting for Debugger" ou "Attaching Debugger” no seu 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á executar essas ações na mesma ordem.

Figura 1. A 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 com 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 visível na tela
  • does not exist: verifica se o elemento View não está presente na hierarquia View atual

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

  1. Clique em Add Assertion. Uma caixa de diálogo Screen Capture é exibida quando o Espresso obtém a hierarquia da IU e outras informações sobre o estado atual do aplicativo. A caixa de diálogo é fechada automaticamente quando o Espresso capturar a tela.
  2. Um layout da tela atual é exibido em um painel à direita da janela Record Your Test. Para selecionar um elemento View no qual criar uma declaração, 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ê deve usar em um 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 automaticamente inserirá o texto atualmente presente no elemento View selecionado. Você pode editar o texto para que ele corresponda à declaração deseja usando o campo de texto na 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 de declaração.

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 seu aplicativo, 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 aplicativo 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 dá ao seu teste um nome exclusivo dentro de seu pacote com base no nome da atividade realizada. Use o campo de texto Test class name se quiser alterar o nome sugerido. Clique em Save.
    • Se ainda não adicionou as dependências do Espresso no seu aplicativo, 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 é aberto automaticamente depois que o Espresso Test Recorder o gera, e o Android Studio mostra a classe de teste como ela está selecionada na janela Project do ambiente de desenvolvimento integrado.
    • O local onde o teste é salvo depende do local da raiz do seu teste de instrumentação, e também do nome da atividade realidade. Por exemplo, testes para o aplicativo de teste Notes são salvos na pasta src > androidTest > java > com.example.username.appname do módulo do aplicativo no qual 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 aplicativo desejado e navegue para o teste que deseja executar. O local do teste dependerá do local da raiz do seu teste de instrumentação e do nome do pacote da atividade realizada. Os exemplos a seguir demonstram onde um teste seria salvo para o aplicativo 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 dentro da 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 clique 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. Leia mais sobre como executar testes na página Testar seu aplicativo.
  3. Na janela Select Deployment Target, escolha o dispositivo no qual você deseja executar o teste. Se necessário, crie um novo Android Virtual Device. 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 compilação completa do seu projeto e abre uma guia com o nome do teste na janela Run, conforme é mostrado na figura 3. Você pode verificar se seu teste é aprovado ou reprovado nessa guia, além do tempo necessário para a execução do teste. Quando o teste for concluído, a guia registrará a mensagem "Tests ran to completion”.

Figura 3. Saída de exemplo na janela Run após a execução local de um teste Espresso.

Para saber mais sobre como programar as 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 aplicativo na nuvem m centenas de configurações de dispositivo. O teste do seu aplicativo no Test Lab é totalmente gratuito dentro da cota gratuita diária do plano Spark. Para executar testes com o Firebase Test Lab, crie um projeto do Firebase para seu aplicativo e siga as instruções para executar seus testes com o Firebase Test Lab do Android Studio.

Figura 4. Saída de exemplo na janela Run após executar um teste com o Firebase Test Lab em vários dispositivos.