Espresso — Como criar uma ViewAction customizada para um RatingBar

Haldny Santos
Android Dev BR
Published in
3 min readNov 13, 2020

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.
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.

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.

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.

onView(withId(R.id.rank_dialog_rating_bar)).perform(RatingBarViewAction(4.0F))

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.

onView(withId(R.id.rank_dialog_rating_bar)).perform(setRating(4.0F))

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!

--

--

Haldny Santos
Android Dev BR

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