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

Mobile Conf 2015 - Testes de Unidade com Robolectric

Mobile Conf 2015 - Testes de Unidade com Robolectric

Short Talk apresentada no Mobile Conf 2015, no dia 30/05, junto com o Lucas Albuquerque (http://www.slideshare.net/olucasalbuquerque).

Stefan Teixeira

May 30, 2015
Tweet

More Decks by Stefan Teixeira

Other Decks in Programming

Transcript

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

    M4U Contatos: • E-mail: [email protected] • Twitter: twitter.com/lucas_albq • Facebook: facebook.com/olucasalbuquerque • LinkedIn: linkedin.com/in/lucasalbuquerque • GitHub: github.com/lalbuquerque • SlideShare: slideshare.net/olucasalbuquerque
  2. About Stefan Stefan Teixeira • QA / DevOps • 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. ↑ # de testes ↓ feedback ↓ # de testes

    ↑ feedback “… not every unit or method of mobile apps can be tested in a isolated manner" (Daniel Knott) http://www.ministryoftesting.com/2014/10/mobile-test-pyramid/
  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. Para saber mais… • App de exemplo: https://github.com/ lalbuquerque/notes •

    Projeto do app contém: ✓ Testes de unidade com Robolectric ✓ Cobertura de código com JaCoCo ✓ Build no CircleCI