about.me/ramonrabello
Ramon Rabello
Automatize seus testes
de UI com a Espresso!
~ 10 anos
Senior Developer
about.me/ramonrabello
Ramon Rabello
Paixão por Comunidades!
Agilista
Organizer
GDG Brasília
BB ...
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 tes...
Configurando a Espresso
build.gradle (app)
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
// Android Testi...
Configurando a Espresso
build.gradle (app)
android {

compileSdkVersion 25

buildToolsVersion "24.0.0"

defaultConfig {

…
t...
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 UI
Criando a classe de Teste
@RunWith(AndroidJunit4.class)
public class LoginActivityTest { }
Criando um Teste de UI
Adicionando uma ActivityTestRule
@RunWith(AndroidJunit4.class)
public class LoginActivityTest {
@Ru...
Criando um Teste de UI
Simulando o preenchimento do campo usuário
@RunWith(AndroidJunit4.class)
public class MainActivityT...
Criando um Teste de UI
@RunWith(AndroidJunit4.class)
public class MainActivityTest {
…
@Test
public void clickLoginButton_...
Criando um Teste de UI
@RunWith(AndroidJunit4.class)
public class MainActivityTest {
…
@Test
public void clickLoginButton_...
Criando um Teste de UI
@RunWith(AndroidJunit4.class)
public class MainActivityTest {
…
@Test
public void clickLoginButton_...
Criando um Teste de UI
@RunWith(AndroidJunit4.class)
public class MainActivityTest {
…
@Test
public void clickLoginButton_...
Status do teste
Verificando se ele passou ou não
Dúvidas em Espresso?
Espresso Cheat Sheet
Executando o Teste
Configurações - Desabilitar animações
Executando o Teste
Executa todos os testes da classe
1
2
1 Executa o teste selecionado2
No Android Studio
Legal! E agora, onde posso ler
mais a respeito da Espresso?
Saiba mais!
Testing Support Library Guide
Clique para saber mais
Android Testing Codelab
Clique para saber mais
Android Te...
OBRIGADO!
goo.gl/VBJTIh
@gdgbrasilia
/gdgbrasilia
Automatize seus testes de UI com a Espresso!
Próximos SlideShares
Carregando em…5
×

Automatize seus testes de UI com a Espresso!

120 visualizações

Publicada em

Apresentação realizada durante o II Encontro de Engenharia e Tecnologia + GDG Conf São Luís, na Faculdade DeVry - São Luís, MA.

Publicada em: Celular
0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
120
No SlideShare
0
A partir de incorporações
0
Número de incorporações
0
Ações
Compartilhamentos
0
Downloads
4
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Automatize seus testes de UI com a Espresso!

  1. 1. about.me/ramonrabello Ramon Rabello Automatize seus testes de UI com a Espresso!
  2. 2. ~ 10 anos Senior Developer about.me/ramonrabello Ramon Rabello Paixão por Comunidades! Agilista Organizer GDG Brasília BB Tecnologia e Serviços Líder de Inovação CEO, Visyo Empreendedor Android Instrutor / Consultor
  3. 3. Por que eu devo testar?
  4. 4. Garantir que determinada feature do sistema funcione como esperada. Teste Unitário
  5. 5. É um roteiro do próprio comportamento de um sistema.
  6. 6. Garantia de que mudanças não quebrem funcionalidades já existentes.
  7. 7. Ah, mas testar dá trabalho!
  8. 8. Desculpe, não tenho tempo para criar testes.
  9. 9. Eu tô cansado de tanto testar as coisas “na mão".
  10. 10. Quando vc lança atualizações sem testes
  11. 11. E coloca o produto em produção E o sistema falha :(
  12. 12. E você não acredita o que pode ter dado errado…
  13. 13. Então, quais ferramentas que utilizo para testar?
  14. 14. Show! E como funciona testes em Android?
  15. 15. Pastas para tipos de testes Testes de UI Testes Unitários
  16. 16. Tá! Agora me apresenta essa tal de Espresso!
  17. 17. 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!
  18. 18. 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
  19. 19. Configurando a Espresso build.gradle (app) android {
 compileSdkVersion 25
 buildToolsVersion "24.0.0"
 defaultConfig {
 … testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
 }
 …
 } Test Instrumentation Runner
  20. 20. Anatomia de um Teste de UI 1 Encontrar uma View 2 Executar uma ação 3 Inspecionar o resultado
  21. 21. Anatomia de um Teste de UI onView(Matcher<View>) 2 Executar uma ação 3 Inspecionar o resultado
  22. 22. Anatomia de um Teste de UI onView(Matcher<View>) .perform(ViewAction) 3 Inspecionar o resultado
  23. 23. Anatomia de um Teste de UI onView(Matcher<View>) .perform(ViewAction) .check(ViewAssertion)
  24. 24. Demo - Tela de Login
  25. 25. Criando um Teste de UI Criando a classe de Teste @RunWith(AndroidJunit4.class) public class LoginActivityTest { }
  26. 26. Criando um Teste de UI Adicionando uma ActivityTestRule @RunWith(AndroidJunit4.class) public class LoginActivityTest { @Rule public ActivityTestRule<LoginActivity> activityTestRule = new ActivityTestRule<>(LoginActivity.class); }
  27. 27. Criando um Teste de UI Simulando 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()); } }
  28. 28. 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
  29. 29. 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
  30. 30. 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
  31. 31. 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
  32. 32. Status do teste Verificando se ele passou ou não
  33. 33. Dúvidas em Espresso? Espresso Cheat Sheet
  34. 34. Executando o Teste Configurações - Desabilitar animações
  35. 35. Executando o Teste Executa todos os testes da classe 1 2 1 Executa o teste selecionado2 No Android Studio
  36. 36. Legal! E agora, onde posso ler mais a respeito da Espresso?
  37. 37. Saiba mais! Testing Support Library Guide Clique para saber mais Android Testing Codelab Clique para saber mais Android Testing Patterns Series Clique para saber mais
  38. 38. OBRIGADO! goo.gl/VBJTIh @gdgbrasilia /gdgbrasilia

×