Espresso 101:Introdução a UI Testing
Pedro Salomão @ppgsalomao
Objetivos1. 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
Robolectric API 16+
JVM
Espresso API 8+ Robotium Calabash Selendroid
Instrumentation API 1+
Android Platform
Appium
UIAutomatorAPI 16+
UIAutomationAPI 18+
Ferramentas para Teste
Robolectric API 16+
JVM
EspressoAPI 8+ Robotium Calabash Selendroid
Instrumentation API 1+
Android Platform
Appium
UIAutomatorAPI 16+
UIAutomationAPI 18+
Testes de Interface1. 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?
Integrando o Espresso1. 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
Espresso - Asserts
onView( ViewMatcher ) .perform( ViewAction )
.check( ViewAssertion )
fonte: https://google.github.io/android-testing-support-library/docs/espresso/cheatsheet/index.html
ViewMatcherDois usos básicos:
• Encontrar uma view (onView) • Verificar uma condição da View (matches)
Exemplos:
• withId( … ) • withText( … ) • isDisplayed()
ViewAssertionPermite verificar uma determinada propriedade.
Exemplos:
• matches( Matcher ) • doesNotExists( … ) • typeText( … )
Observação: doesNotExists() != isNotDisplayed()
Criando um testePassos 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())); } }
Links ÚteisSite da Google para Android Testinghttps://google.github.io/android-testing-support-library/
Código do Demo de Espressohttps://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 Espressohttps://www.youtube.com/watch?v=GlPn60-_txk
Obrigado!
Pedro Salomão @ppgsalomao