Este documento apresenta testes de unidade para aplicativos Android usando o framework Robolectric. Robolectric permite rodar testes de unidade sem precisar de um emulador ou dispositivo, tornando os testes muito mais rápidos. Ele usa "shadow objects" que agem como proxies para classes do Android, permitindo isolar componentes para teste. Exemplos mostram como escrever testes de unidade para atividades e recursos de layout com Robolectric.
TDC 2015 São Paulo - Testes Automatizados de todos os tipos utilizando biblio...
TDC 2015 Floripa - Testes de Unidade com Robolectric
1. Globalcode – Open4education
Testes de Unidade com
Robolectric
Lucas Albuquerque / Stefan Teixeira
lucas.albuquerque12@gmail.com / stefanfk@gmail.com
2. About Lucas
Lucas 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
3. About Stefan
Stefan 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
16. 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!
19. 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
29. 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
31. 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