Upgrade to Pro — share decks privately, control downloads, hide ads and more …

TDC 2015 - Testes de Unidade com Robolectric

TDC 2015 - Testes de Unidade com Robolectric

Palestra apresentada na trilha de Android do TDC 2015 Florianópolis, no dia 14/05

Lucas Albuquerque

June 05, 2015
Tweet

More Decks by Lucas Albuquerque

Other Decks in Technology

Transcript

  1. About Lucas Lucas Albuquerque • Mobile / Backend Developer @

    M4U Contatos: • E-mail: [email protected] • Facebook: facebook.com/olucasalbuquerque • LinkedIn: linkedin.com/in/lucasalbuquerque • GitHub: github.com/lalbuquerque • SlideShare: slideshare.net/olucasalbuquerque
  2. About Stefan Stefan Teixeira • QA / DevOps @ Rastreabilidade

    Brasil • Mantém um blog técnico: stefanteixeira.com.br Contatos: • E-mail: [email protected] • Twitter: twitter.com/stefan_teixeira • Facebook: facebook.com/stefan.teixeira • LinkedIn: linkedin.com/in/stefanteixeira • GitHub: github.com/stefanteixeira • SlideShare: slideshare.net/stefanteixeira
  3. http://www.ministryoftesting.com/2014/10/mobile-test-pyramid/ ↑ # de testes ↓ feedback ↓ # de

    testes ↑ feedback “… not every unit or method of mobile apps can be tested in a isolated manner"
  4. O que é? • Framework para Testes de Unidade •

    Open-source (licença MIT) • Mais compatível com a forma que a maioria dos desenvolvedores Android desenvolvem • Testes rodam na JVM (sem necessidade de Emulador/Device) ➡ Execução MUITO rápida ➡ Um projeto da Pivotal Labs com Robolectric rodava 1047 testes em 28s!
  5. Shadow Objects Shadows são como proxies para as classes do

    Android Exemplos: ShadowImageView é o proxy de ImageView OU AndroidObject.someMethod() ShadowAndroidObject.someMethod() faz proxy de
  6. View e Resource Loading Robolectric faz parse dos arquivos de

    layout e monta uma árvore de views composta pelos view objects e suas shadows.
  7. Robolectric x ActivityUnitTestCase • Android disponibilizou recentemente suporte a Unit

    Tests (https://developer.android.com/training/activity-testing/ activity-unit-testing.html) • MAS… Assim como os Instrumentation Tests, os testes devem ser escritos com JUnit 3 :( ➡ Sem annotations ➡ Sem ignores ➡ Sem @BeforeClass / @AfterClass ➡ Sem static imports
  8. Hands-on • Visão geral do app de exemplo: https:// github.com/lalbuquerque/notes

    • Testes de unidade com Robolectric • Cobertura de código com JaCoCo • Build do app no CircleCI