Espresso 101:
Introdução a UI Testing
Pedro Salomão
@ppgsalomao
ppgsalomao@gmail.com / pedro@onyo.com
#whoami
Objetivos
Objetivos
1. Onde entram as diversas ferramentas de teste;
2. O que são Testes de Interface do Usuário;
3. Como definir o que testar;
4. Como integrar o Espresso ao meu projeto;
5. Como escrever o meu primeiro teste de UI;
6. [BÔNUS] Demo.
Ferramentas para
Teste
Camadas da Aplicação
USUÁRIO APK INTERNET
Interface
Gráfica
Ferramentas para Teste
Robolectric
API 16+
JVM
Espresso
API 8+
Robotium Calabash Selendroid
Instrumentation 

API 1+
Android Platform
Appium
UIAutomator

API 16+
UIAutomation

API 18+
Ferramentas para Teste
Robolectric
API 16+
JVM
Espresso
API 8+
Robotium Calabash Selendroid
Instrumentation 

API 1+
Android Platform
Appium
UIAutomator

API 16+
UIAutomation

API 18+
Camadas da Aplicação
USUÁRIO
ESPRESSO
APK INTERNET
Interface
Gráfica
Testes de Interface
Testes de Interface
1. O que devo testar?
2. Qual o escopo de um teste (método)?
3. Posso testar fluxos completos?
4. E como funciona o estado da aplicação?
5. O que é um Mock e por que é importante?
Espresso
Processo
APK Test APK
Espresso
Vamos falar de
código?!
Integrando o Espresso
Integrando o Espresso
1. Adicionar no build.gradle, em dependencies:
2. Adicionar no build.gradle, em android.defaultConfig:
compile 'com.android.support:support-annotations:23.1.1'
androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.1'
androidTestCompile 'com.android.support.test:runner:0.4.1'
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
fonte: https://google.github.io/android-testing-support-library/docs/espresso/setup/index.html
Escrevendo o Teste
Espresso - Asserts
onView( ViewMatcher )
.perform( ViewAction )
.check( ViewAssertion )
fonte: https://google.github.io/android-testing-support-library/docs/espresso/cheatsheet/index.html
ViewMatcher
Dois usos básicos:
• Encontrar uma view (onView)
• Verificar uma condição da View (matches)
Exemplos:
• withId( … )
• withText( … )
• isDisplayed()
ViewAction
Permite executar ações na tela.
Exemplos:
• click()
• scrollTo( … )
• typeText( … )
ViewAssertion
Permite verificar uma determinada propriedade.
Exemplos:
• matches( Matcher )
• doesNotExists( … )
• typeText( … )
Observação:
doesNotExists() != isNotDisplayed()
Criando um teste
Passos para criar um Teste usando Espresso:
• Adicionar a anotação do JUnit na classe.
• Adicionar uma Rule para a Activity a ser testada.
• Criar os métodos de teste.
Exemplo
@RunWith(AndroidJUnit4.class)
@LargeTest
public class HelloWorldEspressoTest {
@Rule
public ActivityTestRule<MainActivity> mActivityRule =
new ActivityTestRule<>(MainActivity.class);
@Test
public void listGoesOverTheFold() {
onView(withText("Hello world!”))
.check(matches(isDisplayed()));
}
}
DEMO
Links Úteis
Site da Google para Android Testing
https://google.github.io/android-testing-support-library/
Código do Demo de Espresso
https://github.com/ppgsalomao/espresso-examples
GTAC 2014: Espresso, Spoon, Wiremock, Oh my!
https://www.youtube.com/watch?v=-xQCNf_5NNM
Droidcon NYC 2015 - Advanced Android Espresso
https://www.youtube.com/watch?v=GlPn60-_txk
Dúvidas?
Obrigado!
Pedro Salomão
@ppgsalomao
ppgsalomao@gmail.com / pedro@onyo.com

Espresso 101: Introdução a UI Testing