Android

9 ago, 2017

Android Testing Support Library 1.0 está disponível – conheça!

Publicidade

Artigo de Michael Amygdalidis, Stephan Linzner and Nick Korostelev do Mobile-Ninjas team no Google, publicado originalmente pelo Android Developers Blog. A tradução foi feita pela Redação iMasters com autorização. 

 

Temos o prazer de anunciar a versão 1.0 da Android Testing Support Library (ATSL).

A versão 1.0 da ATSL é uma atualização importante para nossas APIs de teste existentes e ela vem com muitos novos recursos, desempenho aprimorado, estabilidade e correções de bugs. Ela fornece paridade completa da API com as APIs de teste da plataforma Android agora obsoletas. Esse lançamento também adiciona uma série de recursos que discutimos em nossa palestra da Google I/O 2017, como suporte nativo para Multiprocess Espresso e Android Test Orchestrator.

Também estamos felizes em anunciar que, a partir da versão 1.0, vamos distribuir releases no repositório Maven do Google, o que torna muito mais fácil usar a ATSL em suas compilações. Para saber mais sobre o uso desse repositório, consulte a introdução do guia do repositório do Google Maven. Note que já não estamos vinculando futuras atualizações à infraestrutura de testes com as atualizações da plataforma. Se você ainda não atualizou seus testes para a ATSL, agora é uma boa hora.

Finalmente, queremos anunciar uma grande atualização para a documentação de teste do Android. Migramos nossa antiga documentação de testes do nosso site GitHub para developers.android.com/testing. Toda a documentação de teste agora aparece em um único local, tornando ainda mais fácil aprender a escrever e executar testes no Android.

Vamos passar para a parte divertida deste artigo, uma visão geral das novas APIs e das ferramentas que fornecemos nesta versão.

Melhorias no Espresso

O Espresso 3.0.0 vem com novos recursos incríveis e desempenho geral aprimorado. Alguns dos destaques incluem: Multiprocess Espresso, Idling Registry e novos recursos de Idling. Vamos dar uma olhada mais detalhada nesses novos recursos:

Multiprocess Espresso

Começando com o Android O, a plataforma inclui suporte para testes de instrumentação fora do processo padrão do seu aplicativo (antes do Android O, você só podia testar os componentes do aplicativo no processo padrão do seu aplicativo). O Multiprocess Espresso torna esse suporte possível. Ele permite que você teste de forma perfeita as interações da UI do seu aplicativo que cruzam os limites do processo enquanto ainda mantêm as garantias de sincronização do Espresso.

A boa notícia é que o Espresso faz todo o trabalho; você não precisa alterar nada para realizar configurações com UI em vários processos. Você pode continuar escrevendo seus testes Espresso como faria para aplicativos de processo único, e o Espresso administra automaticamente o processo IPC e a sincronização entre os processos.

O diagrama a seguir mostra como várias instâncias do Espresso se comunicam entre si:

 

Se você quiser saber mais sobre o Multiprocess Espresso e como usá-lo, olhe nossa documentação e nosso exemplo Multiprocesso.

Idling Registry

Alguns aplicativos usam flavors de compilação no Gradle ou em um framework de injeção de dependência, como Dagger, para gerar configurações de compilação de teste que registram recursos de idling. Outros simplesmente expõem o recurso de idling através de suas atividades. O problema com todas essas abordagens é que elas adicionam complexidade ao seu fluxo de trabalho de desenvolvimento, e algumas delas até quebram o encapsulamento. Com o último release do Espresso, tornamos mais fácil registrar recursos de idling de dentro do código do seu aplicativo, ao introduzir a nova API IdlingRegistry. O IdlingRegistry é um registro leve que não traz toda a biblioteca Espresso, para que você possa registrar mais facilmente os recursos do seu código de aplicação. Ao combinar essa API com o Multiprocess Espresso, você pode registrar recursos de idling de qualquer processo dentro do seu código de aplicação.

O registro da classe Espresso agora está obsoleto.

Recursos de idling

Escrever recursos de idling personalizados pode levar muito tempo, então o Espresso 3.0.0 agora vem com mais recursos de idling fora da caixa para sincronizar suas threads. Os novos recursos incluem: IdlingThreadPoolExecutor e IdlingScheduledThreadPoolExecutor. Mais recursos virão!

Para aproveitar o novo recurso de idling, adicione estas novas dependências ao seu arquivo build.gradle:

androidTestCompile “com.android.support.test.espresso.idling:idling-concurrent:3.0.0”

Além disso, CountingIdlingResource, que anteriormente estava obsoleto no suporte Espresso, foi removido nesta versão. Portanto, você precisa atualizar seus testes para usar o novo pacote CountingIdlingResource que está localizado no recurso de idling Espresso. Para obter detalhes sobre migração completa, consulte nossas notas de lançamento.

ProviderTestRule

Quando você testa objetos ContentProvider, agora pode usar ProviderTestRule em vez de ProviderTestCase2. O ProviderTestRule oferece uma maneira mais fácil de trabalhar com outras regras de teste atualmente disponíveis para AndroidJUnit4.

O ProviderTestRule inclui APIs para inicialização, bem como comandos para executar em um ContentProvider sob teste. Se o ContentProvider estiver baseado em um banco de dados SQLite, você pode usar os comandos ProviderTestRule para configurar o arquivo de banco de dados e os comandos de inicialização.

Para aprender mais, veja a documentação do ProviderTestRule.

Grant Permission Rule

O Android M (nível de API 23) permite que aplicativos solicitem permissões no tempo de execução. No entanto, os diálogos que solicitam permissões de tempo de execução colocam testes em um estado em que eles não podem continuar, fazendo com que eles falhem. Ao usar a GrantPermissionRule, você pode ignorar as janelas pop-up do diálogo e simular um usuário que concede uma permissão de tempo de execução para seu aplicativo.

Android Test Orchestrator

Normalmente, o AndroidJUnitRunner executa todos os testes no mesmo processo de instrumentação, o que pode causar uma série de problemas. Por exemplo, os testes compartilham seu estado na memória e, se um teste falhar, impede que o restante do conjunto de testes seja executado.

Embora seja possível isolar os testes ao emitir comandos sequenciais adb, esse processo adiciona carga de processamento do lado do host. Ao usar o novo Android Test Orchestrator, você pode obter isolamento de teste totalmente no dispositivo, conforme mostrado neste diagrama:

 

Esteja ciente de que se seus testes exigem que o estado compartilhado passe, o orquestrador faz com que eles falhem. Esse comportamento é padrão. A partir deste artigo, o Android Test Orchestrator está em versão beta e disponível para uso por meio de linha de comando. Nós temos integrações planejadas para Firebase Test Lab e Android Studio, que serão disponibilizadas em breve.

Para mais informações, veja o guia de desenvolvedor do ndroid Testing Orchestrator.

AndroidJUnitRunner

O AndroidJUnitRunner agora inclui vários recursos adicionais:

  • Você pode usar JUnitParams.
  • Você pode configurar carregadores de classe e personalizar filtros de teste JUnit usando os argumentos do runner.

Às vezes, você quer testar uma atividade que você cria e configura on the fly como parte do seu fluxo de trabalho de teste. Agora, você pode configurar MonitoringInstrumentation (e, por extensão, AndroidJUnitRunner) usando um InterceptingActivityFactory. Você pode criar sua atividade sob teste com uma configuração específica de teste sem ter que confiar na injeção de compilação.

Esta visão geral destaca apenas algumas das mudanças mais significativas que fizemos para a ATSL. Há muitas outras mudanças que merecem ser exploradas. Para obter os detalhes da versão completa, consulte nossas notas de lançamento.

Por último, mas não menos importante, queremos agradecer a todos os desenvolvedores que colaboraram com recursos para este lançamento. Também queremos agradecer aos especialistas de testes do Android nas equipes de engenharia mobile na American Express, Slack e GDE Chiu-Ki Chan por colaborarem conosco e fornecerem feedback valioso sobre a versão de pré-lançamento da Android Testing Support Library.

 

***

Este artigo é do Android Developers Blog. Ele foi escrito por Michael Amygdalidis, Stephan Linzner and Nick Korostelev do Mobile-Ninjas team no Google. A tradução foi feita pela Redação iMasters com autorização. Você pode acessar o original em: https://android-developers.googleblog.com/2017/07/android-testing-support-library-10-is.html