Executando Testes Instrumentados em uma tarefa Gradle

Igor Escodro
Android Dev BR
Published in
3 min readJun 24, 2021
Train With Smoke by Gabriela Palai

No último Google I/O, várias novidades incríveis foram mostradas. A mais animadora na minha opinião foi a Unified Test Platform (Plataforma Unificada de Testes, em tradução livre — anteriormente conhecida como Nitrogen), que deu os seus primeiros passos ao publico durante o evento. A partir do Android Studio Bumblebee, nós podemos testar essas funcionalidades experimentais, tornando nossos testes mais confiáveis e escaláveis, principalmente para testes instrumentados automatizados.

Nós fomos apresentados ao Gradle Managed Virtual Devices (Dispositivos Virtuais Gerenciados pelo Gradle, em tradução livre), uma ferramenta que permite executar testes instrumentados com o Android Gradle Plugin. Essa nova funcionalidade é responsável por baixar, criar, instalar e limpar o dispositivo virtual, executando os testes com mais performance e consistência.

Criando nosso primeiro Dispositivo Virtual

Para começar, tudo que precisamos fazer é especificar as configurações do dispositivo virtual no nosso arquivo build.gradle:

Build Gradle configurando o Dispositivo Virtual do Gradle

No código acima, nós criamos um dispositivo Pixel 2, rodando API nível 29 com Google Play Services em uma ABI x86. Nós podemos misturar dispositivos como Celulares, Tablets, TVs, WearOS, Celulares Genéricos com qualquer versão de Android.

Para mais informações sobre quais dispositivos podem ser criados, podemos acessar Tools > AVD Manager > Create Virtual Device… e conferir todos os hardwares suportados.

Android Virtual Device Manager

Após o Dispositivo Virtual estiver configurado, podemos executar o comando para os testes rodarem. Antes de mais nada, habilitamos a funcionalidade experimental do Unified Test Platform e referenciamos o nosso nome-do-dispositivo + BuildVariant + AndroidTest. O comando genérico fica:

./gradlew
-Pandroid.experimental.androidTest.useUnifiedTestPlatform=true
[nome do dispositivo][variante da build][AndroidTest]

Atualizando o comando com base no nosso build.gradle criado anteriormente, e rodando em Debug, o comando irá ficar:

./gradlew
-Pandroid.experimental.androidTest.useUnifiedTestPlatform=true
pixel2api29DebugAndroidTest

Criando um grupo de dispositivos

Também é possível criar um grupo de dispositivos com configurações diferentes para validar os testes em múltiplos cenários. Tudo que precisamos fazer é adicionar o parâmetro deviceGroups e referenciar os dispositivos criados. Vamos ver como o nosso arquivo build.gradle irá ficar com essa atualização:

Build Gradle configurando um Grupo de Dispositivos

Agora em nosso exemplo temos também um Tablet Nexus 9 e um novo grupo chamado phoneAndTablet. Dentro desse novo grupo, os dois dispositivos estão referenciados para rodar os testes juntos. Para executar os testes em um grupo de dispositivos, atualizamos o comando anterior com o nome-do-grupo ao invés do dispositivo individual.

./gradlew
-Pandroid.experimental.androidTest.useUnifiedTestPlatform=true
phoneAndTabletGroupDebugAndroidTest

Próximos passos

Eu criei um repositório para facilitar o teste dessa ferramenta sensacional. É só clonar, compilar usando o Android Studio Bumblebee e executar qualquer comando mostrado nesse artigo para testar. 🎉

Conclusão

Eu já trabalhei em diversos projetos nos quais desenvolvíamos testes instrumentados, mas eles não eram executados em uma pipeline devido a restrições técnicas e dificuldade para integrar o Emulador em alguns serviços de Integração Contínua (CI). Agora, usando o Gradle Managed Virtual Devices, a execução é tão simples quando adicionar uma nova tarefa para rodar durante a compilação do aplicativo.

Estou muito animado em como essa plataforma unificada irá nos ajudar a criar melhores testes e ambientes para validarmos nossa aplicação. Tudo isso, com a adição de alguns parâmetros no arquivo Gradle.

Se você encontrar qual problema ao usar essas ferramentas experimentais, sinta-se livre para abrir um chamado no Issue Tracker. Isso vai ajudar o Google a rastrear e solucionar os bugs, ajudando a comunidade a criar uma solução mais robusta. 😊

Material adicional

Para mais informações sobre as novas funcionalidades no Android Studio Bumblebee e como o Unified Test Platform pode te ajudar a alcançar mais segurança e escalabilidade e seus testes, eu recomendo os seguintes links:

Muito obrigado por ler meu artigo ❤️

--

--

Igor Escodro
Android Dev BR

Passionate Android developer | Google Developer Expert for Android