tdc 2015 - testes de unidade com robolectric
TRANSCRIPT
Globalcode – Open4education
Testes de Unidade com Robolectric
Lucas Albuquerque / Stefan [email protected] / [email protected]
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
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
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!