Automatize seus testes de UI com a Espresso!

64 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
64
No SlideShare
0
A partir de incorporações
0
Número de incorporações
0
Ações
Compartilhamentos
0
Downloads
2
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

×