27
Espresso 101: Introdução a UI Testing Pedro Salomão @ppgsalomao [email protected] / [email protected]

Espresso 101: Introdução a UI Testing

  • Upload
    onyo

  • View
    172

  • Download
    3

Embed Size (px)

Citation preview

Espresso 101:Introdução a UI Testing

Pedro Salomão @ppgsalomao

[email protected] / [email protected]

#whoami

Objetivos

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

Camadas da Aplicação

USUÁRIO APK INTERNETInterfaceGráfica

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+

Camadas da Aplicação

USUÁRIOESPRESSO APK INTERNETInterface

Gráfica

Testes de Interface

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?

Espresso

Processo

APK Test APK

Espresso

Vamos falar de código?!

Integrando o Espresso

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

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

ViewMatcherDois usos básicos:

• Encontrar uma view (onView) • Verificar uma condição da View (matches)

Exemplos:

• withId( … ) • withText( … ) • isDisplayed()

ViewActionPermite executar ações na tela.

Exemplos:

• click() • scrollTo( … ) • typeText( … )

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())); } }

DEMO

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

Dúvidas?