Como testar seu App Android Usando Espresso

Como um desenvolvedor, você já sabe a importância de escrever testes para o seu código. Isto é tão verdadeiro para o desenvolvimento de aplicativos Android, como é para qualquer outro tipo de desenvolvimento. Felizmente, o Android faz com que seja fácil de adicionar testes para sua aplicação.

As informações a seguir irá levá-lo através dos fundamentos da adição de testes para seu aplicativo Android usando Espresso. Espresso é uma biblioteca que é fornecido com o SDK do Android para fazer interfaces de testes com usuários Android mais simples.

Apenas certifique-se o seu aplicativo está usando Gradle 2.1.1 ou posterior com ferramentas de compilação Android 21.1.2 ou posterior.

Para adicionar um teste Espresso ao seu aplicativo, você vai precisar de:

  1. Modifique o seu script de construção

  2. Faça o teste

  3. Execute o teste

Como modificar a sua construção

Abra o build.gradle arquivo para a sua aplicação. Se seu aplicativo tem vários módulos, você vai querer abrir o build.gradle Arquivo do módulo de aplicativo, e não no módulo de raiz. Assim, para o app Silent Mode Toggle, você abriria SilentModeToggle / build.gradle.

Adicione o seguinte dependência para a seção dependências do seu build.gradle Arquivo:

dependências {# 133- //Testedependências androidTestCompile 'com.android.support.test.espresso: espresso-core: 2,0'}

Isto diz Android Studio para incluir a biblioteca Espresso em suas dependências de teste. A biblioteca Espresso não será incorporado ao apk que você enviar, mas vai ser incluído no seu apk teste para que seus testes pode usá-lo.

Em seguida, adicione o seguinte ao seu DefaultConfig:

DefaultConfig {# 133- //otestecorredorparausarquandocorrendoatestes. testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"}

Isto diz Android que Instrumentation usar para executar os testes. Você não precisa saber muito sobre a Instrumentação, além de que este é o que você precisa para usar sempre que você deseja executar testes de café expresso.

Isso é tudo que você precisa fazer para adicionar suporte para Espresso. Em seguida, você precisa escrever o teste real.

Como escrever o teste

Para adicionar um teste para Android, você precisa ter certeza de que você colocá-lo no local certo. Abre o teu src diretório no Android Studio, e criar um novo diretório chamado androidTest se ele ainda não existir. Dentro deste diretório, crie um diretório chamado Java.

Dentro do diretório que você acabou de criar, crie um novo arquivo chamado SilentModeToggleEspressoTest.java. Você pode realmente atribuir o nome que você quiser, basta ter certeza que termina em "Test.java".

Coloque o seguinte em seu arquivo de teste:

classe pública SilentModeToggleEspressoTestextends ActivityInstrumentationTestCase2{SilentModeToggleEspressoTest pública () {super (MainActivity.class) -}}

Isso cria uma nova classe chamada SilentModeToggleEspressoTest. estende-se ActivityInstrumentationTestCase2, que você vai usar para escrever a maioria dos testes de seu aplicativo. ActivityInstrumentationTestCase2 é parametrizado com o tipo de atividade que você deseja testar. Para o app SilentModeToggle, a actividade principal do aplicativo é chamado, apropriadamente, Atividade principal.

Sua classe de teste precisa ter um construtor padrão, e nesse construtor padrão que você vai chamar a classe construtor de super 'com a classe de atividade que está sendo testado. O que você escreveu até agora vai ser basicamente copiar-colar para praticamente todos os testes Android alguma vez escrever.

Antes de você pode escrever seu teste real, você precisará configurá-lo. Para fazer isso, adicione o seguinte método à sua classe de teste:

vazio @Overridepublic setup () throws Exception {super.setUp () - getActivity () -}

Para testar uma atividade usando Espresso, você deve primeiro criar a atividade que está sendo testado. Isto é feito ligando getActivity (), que cria e lança a atividade para você se ele ainda não existir. Você pode fazer isso acima na configuração() método para a classe, que é executado antes de cada um dos seus testes são executados.

Agora, finalmente, você pode escrever seu teste. Adicione o seguinte método à sua classe:

public void testPhoneIconIsDisplayed () {// Quando a vista phone_icon está disponível, // verificar se é displayed.onView (withId (R.id.phone_icon)) cheque (partidas (isDisplayed ())) -.}

Você precisará importar o OnView, withId, Verifica, fósforos, e é exibido métodos. Estúdio Android oferece para ajudá-lo com as importações estáticas necessárias.

testes de café expresso são projetados para ser muito fácil de ler. Como você pode ver aqui, este teste está aguardando até que a vista com ID R.id.phone_icon está disponível, e uma vez que é, ele está verificando que a visão é exibida.

O próximo passo é executar o teste.

Como executar o teste

Em primeiro lugar, iniciar um emulador ou conectar seu telefone ao computador via USB.

Uma vez que o dispositivo está ligado e funcionando, direito, clique no Java diretório sob androidTest, e em seguida, escolha executar todos os testes (com o ícone Android):

image0.png

Se o teste for executado com êxito, você deve ver algo como o seguinte:

image1.png

Por que são testes importantes?

Por que passar por todo esse esforço apenas para adicionar um teste simples? Você pode pensar que dificilmente parece vale a pena testar essa funcionalidade básica.

O aplicativo Silent Mode Toggle é simples o suficiente para que, talvez, um programador preguiçoso pode justificar pular testes. Talvez.

Se você adicionar um par de testes para adicionar, remover e edição de tarefas para esse aplicativo, você tem a paz de espírito de saber que sempre que você fazer uma mudança, seus testes automatizados vai pegar todos os erros significativos que você introduzir.

Você realmente quer para re-teste de todas as funcionalidades do seu aplicativo em telefones, tablets, relógios e televisões, e depois fazer tudo de novo em dispositivos mais antigos para testar a compatibilidade com versões anteriores? testes Adicionando pode cuidar de muito do que a dificuldade para você.

Sobre os testes de café expresso

testes de café expresso são escritas usando o seguinte formato:

OnView (Matcher) .Executar (ViewAction) .Verificar (ViewAssertion)

A seguinte folha de fraude, cortesia do projeto Espresso 2.0, é uma ferramenta útil para escrever testes de café expresso. Ele lista a sintaxe geral para os testes de café expresso, e também lista os tipos mais comuns de matchers: ViewAction e ViewAssertion.

image2.png

Uma forma rápida de escrever testes de café expresso é tirar proveito da funcionalidade de preenchimento automático do Android Studio. Se você sabe que a maioria dos matchers estão no ViewMatchers classe, a maioria das ações estão em vista ViewActions, ea maioria das afirmações vista estão em ViewAssertions, então você pode usar autocomplete para encontrar a correspondência de direita:

image3.png

Vamos adicionar mais uma

Então, com isso em mente, vamos adicionar mais um teste. Adicione as linhas em negrito para a sua classe de teste:

classe pública SilentModeToggleEspressoTestextends ActivityInstrumentationTestCase2{ AudioManageraudioManager-# 133- @ Overridepublic vazio de configuração () throws Exception {super.setUp () - Atividadeatividade=getActivity () - //RecuperaraAudioManagera partir deaatividade Audiomanager=(AudioManager) activity.getSystemService (Context.AUDIO_SERVICE) - //Façocertoaringermodoéreiniciarparanormal audioManager.setRingerMode ( AudioManager.RINGER_MODE_NORMAL) -} # 133- públicovaziotestCanToggleIcon (){ //Quandoaphone_iconVisãoédisponível,cliqueisto . OnView (withId (R.id.phone_icon)) Perform (clique ()) - //Entãoafirmaraqueleatelefoneéagoradentrosilenciosomodo. assertTrue (RingerHelper.isPhoneSilent (Audiomanager)) - }}

Este teste encontra o botão de alternância e clica nele, em seguida, verifica que o modo silencioso do aplicativo foi ligado. o configuração() código garante que o modo de toque é reposto ao normal antes de o teste é executado. Agora, sempre que você fizer uma alteração em seu aplicativo, você só precisa executar esses casos de teste para ter a certeza de que você não tenha quebrado nada importante.

Se você tem um servidor de integração contínua, tudo que você precisa fazer é executar o connectedCheck -alvo em Gradle para executar seus casos de teste com cada submissão que você faz. Se você não tiver um servidor de integração contínua, no entanto, talvez agora é um bom momento para olhar em um! Confira travis-ci.org para uma boa opção.

Testando aplicativos no Android é um tema profundo e envolvido, mas agora você deve ter tudo o que você precisa para começar a testar seus aplicativos!

Se você gostava de ter mais avançado, você pode estar interessado em alguns dos seguintes recursos:

  • Usar Colher para testar em vários dispositivos.

  • Experimentar Garfo para executar testes rapidamente em vários dispositivos.

  • Experimentar Travis-ci ou Jenkins para um servidor de integração contínua.

  • Assista introdução de Michael Bailey aos Testes Android em Youtube.

menu