Automatize seus testes de UI com a Espresso!

  • View
    107

  • Download
    0

  • Category

    Mobile

Preview:

Citation preview

about.me/ramonrabelloRamon Rabello

Automatize seus testes de UI com a Espresso!

~ 10 anosSenior Developer

about.me/ramonrabelloRamon Rabello

Paixão por Comunidades!Agilista

OrganizerGDG Brasília

BB Tecnologia e ServiçosLíder de Inovação

CEO, VisyoEmpreendedor

AndroidInstrutor / Consultor

Por que eu devo testar?

Garantir que determinada feature do sistema funcione como esperada.

Teste Unitário

É um roteiro do próprio comportamento de um sistema.

Garantia de que mudanças não quebrem funcionalidades já existentes.

Ah, mas testar dá trabalho!

Desculpe, não tenho tempo para criar testes.

Eu tô cansado de tanto testar as coisas “na mão".

Quando vc lança atualizações sem testes

E coloca o produto em produção

E o sistema falha :(

E você não acredita o que pode ter dado errado…

Então, quais ferramentas que utilizo para testar?

Show! E como funciona testes em Android?

Pastas para tipos de testes

Testes de UI

Testes Unitários

Tá! Agora me apresenta essa tal de Espresso!

Espresso

Parte da Android Support Testing Library

Simula interações com o usuário

Sincronização automática de ações de teste com a UI

Extremamente rápida!

Configurando a Espresso

build.gradle (app)

dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) // Android Testing Support Library's runner and rules androidTestCompile ‘com.android.support.test:runner:0.5' androidTestCompile 'com.android.support.test:rules:0.5' // Espresso UI Testing dependencies androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) … }

Dependências

Configurando a Espresso

build.gradle (app)

android { compileSdkVersion 25 buildToolsVersion "24.0.0" defaultConfig { … testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } … }

Test Instrumentation Runner

Anatomia de um Teste de UI

1 Encontrar uma View

2 Executar uma ação

3 Inspecionar o resultado

Anatomia de um Teste de UI

onView(Matcher<View>)

2 Executar uma ação

3 Inspecionar o resultado

Anatomia de um Teste de UI

onView(Matcher<View>)

.perform(ViewAction)

3 Inspecionar o resultado

Anatomia de um Teste de UI

onView(Matcher<View>)

.perform(ViewAction)

.check(ViewAssertion)

Demo - Tela de Login

Criando um Teste de UICriando a classe de Teste@RunWith(AndroidJunit4.class) public class LoginActivityTest { }

Criando um Teste de UIAdicionando uma ActivityTestRule@RunWith(AndroidJunit4.class) public class LoginActivityTest {

@Rule public ActivityTestRule<LoginActivity> activityTestRule = new ActivityTestRule<>(LoginActivity.class);

}

Criando um Teste de UISimulando o preenchimento do campo usuário@RunWith(AndroidJunit4.class) public class MainActivityTest {

… @Test public void clickLoginButton_shouldVerifyCredentials(){ onView(withId(R.id.username_field)) .perform(typeText(“espresso”), closeSoftKeyboard()); }

}

Criando um Teste de UI

@RunWith(AndroidJunit4.class) public class MainActivityTest {

… @Test public void clickLoginButton_shouldVerifyCredentials(){ … onView(withId(R.id.password_field)) .perform(typeText(“35pr3550”), closeSoftKeyboard()); }

}

Simulando o preenchimento do campo senha

Criando um Teste de UI

@RunWith(AndroidJunit4.class) public class MainActivityTest {

… @Test public void clickLoginButton_shouldVerifyCredentials(){ … onView(withId(R.id.login_button)).perform(click()); }

}

Simulando o clique no botão

Criando um Teste de UI

@RunWith(AndroidJunit4.class) public class MainActivityTest {

… @Test public void clickLoginButton_shouldVerifyCredentials(){ … onView(withId(R.id.username_field)).check(matches(hasText("espresso")); }

}

Verifica o conteúdo do campo usuário

Criando um Teste de UI

@RunWith(AndroidJunit4.class) public class MainActivityTest {

… @Test public void clickLoginButton_shouldVerifyCredentials(){ … onView(withId(R.id.password_field)).check(matches(hasText("35pr3550")); }

}

Verifica o conteúdo do campo senha

Status do testeVerificando se ele passou ou não

Executando o TesteConfigurações - Desabilitar animações

Legal! E agora, onde posso ler mais a respeito da Espresso?

Saiba mais!

Testing Support Library GuideClique para saber mais

Android Testing CodelabClique para saber mais

Android Testing Patterns SeriesClique para saber mais

OBRIGADO!

goo.gl/VBJTIh

@gdgbrasilia

/gdgbrasilia

Recommended