Testes de Unidade com Robolectric -...

Preview:

Citation preview

Globalcode – Open4education

Testes de Unidade com Robolectric

Lucas Albuquerque / Stefan Teixeiralucas.albuquerque12@gmail.com / stefanfk@gmail.com

About LucasLucas Albuquerque

• Mobile / Backend Developer @ M4U

Contatos:

• E-mail: lucas.albuquerque12@gmail.com• Facebook: facebook.com/olucasalbuquerque• LinkedIn: linkedin.com/in/lucasalbuquerque• GitHub: github.com/lalbuquerque• SlideShare: slideshare.net/olucasalbuquerque

About StefanStefan Teixeira

• QA / DevOps @ Rastreabilidade Brasil• Mantém um blog técnico: stefanteixeira.com.br

Contatos:

• E-mail: stefanfk@gmail.com• Twitter: twitter.com/stefan_teixeira• Facebook: facebook.com/stefan.teixeira• LinkedIn: linkedin.com/in/stefanteixeira• GitHub: github.com/stefanteixeira• SlideShare: slideshare.net/stefanteixeira

Como vocês testam apps Android?

Pergunta:

(a) Testes manuais

(b) Testes pela UI

(c) Testes de Unidade

(d) Testes são para os fracos

Pirâmide de Automação de Testes

↑ # de testes↑ feedback

↓ # de testes↓ feedback

Mas e para apps Mobile?

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

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"

Podemos resolver isso com o 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!

Como funciona?

Shadow Objects e

View Resource Loading

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

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

Shadow Objects

Shadow Objects

Mas por que preciso usá-los?

View e Resource Loading

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

Que tipo de testes posso fazer com

Robolectric?

Robolectricx

ActivityUnitTestCase

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

Hands-on

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

Globalcode – Open4education

Obrigado!