tdc 2015 - testes de unidade com robolectric

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

Upload: lucas-albuquerque

Post on 10-Aug-2015

141 views

Category:

Software


1 download

TRANSCRIPT

Page 1: TDC 2015 - Testes de Unidade com Robolectric

Globalcode – Open4education

Testes de Unidade com Robolectric

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

Page 2: TDC 2015 - Testes de Unidade com Robolectric

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

Page 3: TDC 2015 - Testes de Unidade com Robolectric

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

Page 4: TDC 2015 - Testes de Unidade com Robolectric

Como vocês testam apps Android?

Pergunta:

Page 5: TDC 2015 - Testes de Unidade com Robolectric

(a) Testes manuais

Page 6: TDC 2015 - Testes de Unidade com Robolectric

(b) Testes pela UI

Page 7: TDC 2015 - Testes de Unidade com Robolectric

(c) Testes de Unidade

Page 8: TDC 2015 - Testes de Unidade com Robolectric

(d) Testes são para os fracos

Page 9: TDC 2015 - Testes de Unidade com Robolectric

Pirâmide de Automação de Testes

Page 10: TDC 2015 - Testes de Unidade com Robolectric
Page 11: TDC 2015 - Testes de Unidade com Robolectric

↑ # de testes↑ feedback

↓ # de testes↓ feedback

Page 12: TDC 2015 - Testes de Unidade com Robolectric

Mas e para apps Mobile?

Page 13: TDC 2015 - Testes de Unidade com Robolectric

http://www.ministryoftesting.com/2014/10/mobile-test-pyramid/

Page 14: TDC 2015 - Testes de Unidade com Robolectric

http://www.ministryoftesting.com/2014/10/mobile-test-pyramid/

↑ # de testes↓ feedback

↓ # de testes↑ feedback

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

in a isolated manner"

Page 15: TDC 2015 - Testes de Unidade com Robolectric

Podemos resolver isso com o Robolectric!

Page 16: TDC 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 17: TDC 2015 - Testes de Unidade com Robolectric
Page 18: TDC 2015 - Testes de Unidade com Robolectric

Como funciona?

Shadow Objects e

View Resource Loading

Page 19: TDC 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 20: TDC 2015 - Testes de Unidade com Robolectric

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

Shadow Objects

Page 21: TDC 2015 - Testes de Unidade com Robolectric

Shadow Objects

Mas por que preciso usá-los?

Page 22: TDC 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 23: TDC 2015 - Testes de Unidade com Robolectric

Que tipo de testes posso fazer com

Robolectric?

Page 24: TDC 2015 - Testes de Unidade com Robolectric
Page 25: TDC 2015 - Testes de Unidade com Robolectric
Page 26: TDC 2015 - Testes de Unidade com Robolectric
Page 27: TDC 2015 - Testes de Unidade com Robolectric
Page 28: TDC 2015 - Testes de Unidade com Robolectric

Robolectricx

ActivityUnitTestCase

Page 29: TDC 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 30: TDC 2015 - Testes de Unidade com Robolectric

Hands-on

Page 31: TDC 2015 - Testes de Unidade com Robolectric

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

Page 32: TDC 2015 - Testes de Unidade com Robolectric

Globalcode – Open4education

Obrigado!