Espresso — Como criar uma ViewAction customizada para um RatingBar

Haldny Santos
Nov 13, 2020 · 3 min read

No desenvolvimento de aplicações Android, uma parte bastante importante são os testes automatizados de UI utilizando a biblioteca Espresso, muitas pessoas negligênciam codificar testes e outras por não terem conhecimento suficiente sobre o poder dessa biblioteca acabam não usando. Nesta semana, no slack do AndroidDevBR, uma pessoa surgiu com uma dúvida que a resolução era bem simples, entretanto, pode ser a dúvida de outras pessoas também, dessa forma, vim aqui compartilhar a resolução.

Uma pergunta, querendo saber como alterar a quantidade de estrelas em um componente do Android chamado RatingBar.
Uma pergunta, querendo saber como alterar a quantidade de estrelas em um componente do Android chamado RatingBar.
Pergunta sobre como alterar a quantidade de estrelas em um RatingBar do Android.

Para a aplicação de teste, fizemos um fluxo bem simples com um FloatingActionButton, que abre uma caixa de diálogo, que contém um texto, um RatingBar e um botão, simulando o envio da avaliação para um servidor, como vocês podem ver abaixo.

Image for post
Image for post
Screenshot da aplicação de teste, com um FloatActionButton no fundo e uma diálogo onde o usuário pode colocar a sua nota e um botão de enviar.

Então para iniciarmos a testar a nossa aplicação, o primeiro passo é configurarmos as dependências de testes da nossa aplicação no build.gradle da aplicação.

Uma ViewAction é responsável por realizar uma interação no elemento View fornecido, ou seja, ela irá executar uma ação na View fornecida. Como o RatingBar não têm nenhuma ViewAction pré-definida, precisamos criar o nosso ViewAction customizado, para isso, precisamos criar uma classe que estende de ViewAction e implementa três método, são eles:
1. getConstraints — Um mecanismo para especificar em que tipo de View a ViewAction customizada pode executar a ação definida no método perform.
2. getDescription — Descrição sobre a ViewAction Customizada.
3. perform — A ação que será executada na View.

Por fim, podemos criar a nossa classe de teste, onde vamos seguir os seguintes steps:
1. Ao abrir a tela, clicar no FloatingActionButton;
2. Verificar se o RatingBar está sendo mostrado na caixa de diálogo;
3. Clicar no RatingBar colocando a nota como 4 estrelas;
4. Verificar que ao alterar o valor do RatingBar, uma variável na nossa MainActivity também teve o valor alterado;
5. Verificar que ao clicar no botão Enviar, a caixa de diálogo não existe mais na MainActivity.

Image for post
Image for post
Video com as ações executadas pela biblioteca espresso.

Com isso, temos o nosso RatingBar fazendo a ação que programamos de forma satisfatória, entretanto estamos criando uma instância dele no nosso terceiro passo, que está fora do padrão dos outros ViewActions.

Para termos o mesmo padrão, podemos criar um objeto para encapsular essa lógica.

E assim poder chamar a nossa ViewAction conforme o padrão de escrita de testes com Espresso.

Com isso finalizamos a nossa implementacão e temos o nosso ViewAction customizado.

~Se você gostou deste artigo, clique no 👏 abaixo para que mais pessoas possam vê-lo. Também você pode me seguir no Medium, e ai vai poder receber atualizações sobre o meu próximo artigo!

Android Dev BR

Artigos em português sobre Android, curados pela comunidade…

Haldny Santos

Written by

Dad(Enzo) & Husband(@rafaela.araujo.silva) | Software Engineer at @inovacao_cesar | Android | Soccer Lover | Creative

Android Dev BR

Artigos em português sobre Android, curados pela comunidade Android Dev BR. Junte-se a nós: https://androiddevbr.org/.

Haldny Santos

Written by

Dad(Enzo) & Husband(@rafaela.araujo.silva) | Software Engineer at @inovacao_cesar | Android | Soccer Lover | Creative

Android Dev BR

Artigos em português sobre Android, curados pela comunidade Android Dev BR. Junte-se a nós: https://androiddevbr.org/.

Medium is an open platform where 170 million readers come to find insightful and dynamic thinking. Here, expert and undiscovered voices alike dive into the heart of any topic and bring new ideas to the surface. Learn more

Follow the writers, publications, and topics that matter to you, and you’ll see them on your homepage and in your inbox. Explore

If you have a story to tell, knowledge to share, or a perspective to offer — welcome home. It’s easy and free to post your thinking on any topic. Write on Medium

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store