mobile conf 2015 - testes de unidade com robolectric

32
Testes de Unidade com Robolectric Lucas Albuquerque / Stefan Teixeira [email protected] / [email protected]

Upload: lucas-albuquerque

Post on 16-Aug-2015

34 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: Mobile Conf 2015 - Testes de Unidade com Robolectric

Testes de Unidade com Robolectric

Lucas Albuquerque / Stefan Teixeira [email protected] / [email protected]

Page 2: Mobile Conf 2015 - Testes de Unidade com Robolectric

About LucasLucas 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

Page 3: Mobile Conf 2015 - Testes de Unidade com Robolectric

About StefanStefan 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

Page 4: Mobile Conf 2015 - Testes de Unidade com Robolectric

Como vocês testam apps Android?

Pergunta:

Page 5: Mobile Conf 2015 - Testes de Unidade com Robolectric

(a) Testes manuais

Page 6: Mobile Conf 2015 - Testes de Unidade com Robolectric

(b) Testes pela UI

Page 7: Mobile Conf 2015 - Testes de Unidade com Robolectric

(c) Testes de Unidade

Page 8: Mobile Conf 2015 - Testes de Unidade com Robolectric

(d) Testes são para os fracos

Page 9: Mobile Conf 2015 - Testes de Unidade com Robolectric

Pirâmide de Automação de Testes

Page 10: Mobile Conf 2015 - Testes de Unidade com Robolectric

Pirâmide de Automação de Testes

(Mike Cohn - Succeeding With Agile)

Page 11: Mobile Conf 2015 - Testes de Unidade com Robolectric
Page 12: Mobile Conf 2015 - Testes de Unidade com Robolectric

↑ # de testes↑ feedback

↓ # de testes↓ feedback

Page 13: Mobile Conf 2015 - Testes de Unidade com Robolectric

Mas e para apps Mobile?

Page 14: Mobile Conf 2015 - Testes de Unidade com Robolectric

(Daniel Knott)http://www.ministryoftesting.com/2014/10/mobile-test-pyramid/

Page 15: Mobile Conf 2015 - Testes de Unidade com Robolectric

↑ # de testes↓ feedback

↓ # de testes↑ feedback

“… not every unit or methodof mobile apps can be tested

in a isolated manner"

(Daniel Knott)http://www.ministryoftesting.com/2014/10/mobile-test-pyramid/

Page 16: Mobile Conf 2015 - Testes de Unidade com Robolectric

Podemos resolver isso com o Robolectric!

Page 17: Mobile Conf 2015 - Testes de Unidade com Robolectric

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!

Page 18: Mobile Conf 2015 - Testes de Unidade com Robolectric
Page 19: Mobile Conf 2015 - Testes de Unidade com Robolectric

Como funciona?

Shadow Objects e

View Resource Loading

Page 20: Mobile Conf 2015 - Testes de Unidade com Robolectric

Shadow ObjectsShadows são como proxies para as classes do Android

Exemplos:

ShadowImageView é o proxy de ImageView

OU

AndroidObject.someMethod() ShadowAndroidObject.someMethod()faz proxy de

Page 21: Mobile Conf 2015 - Testes de Unidade com Robolectric

http://www.slideshare.net/joemoore1/tdd-android-applications-with-robolectric

Shadow Objects

Page 22: Mobile Conf 2015 - Testes de Unidade com Robolectric

Shadow Objects

Mas por que preciso usá-los?

Page 23: Mobile Conf 2015 - Testes de Unidade com Robolectric

View e Resource Loading

Robolectric faz parse dos arquivos de layout e monta uma árvore de views composta pelos view objects e suas shadows.

Page 24: Mobile Conf 2015 - Testes de Unidade com Robolectric

Que tipo de testes posso fazer com

Robolectric?

Page 25: Mobile Conf 2015 - Testes de Unidade com Robolectric
Page 26: Mobile Conf 2015 - Testes de Unidade com Robolectric
Page 27: Mobile Conf 2015 - Testes de Unidade com Robolectric
Page 28: Mobile Conf 2015 - Testes de Unidade com Robolectric
Page 29: Mobile Conf 2015 - Testes de Unidade com Robolectric

Robolectricx

ActivityUnitTestCase

Page 30: Mobile Conf 2015 - Testes de Unidade com Robolectric

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

Page 31: Mobile Conf 2015 - Testes de Unidade com Robolectric

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

Page 32: Mobile Conf 2015 - Testes de Unidade com Robolectric

Obrigado!