![Page 1: Mobile Conf 2015 - Testes de Unidade com Robolectric](https://reader030.vdocuments.us/reader030/viewer/2022032502/55ba9c07bb61eb47268b4746/html5/thumbnails/1.jpg)
Testes de Unidade com Robolectric
Lucas Albuquerque / Stefan Teixeira [email protected] / [email protected]
![Page 2: Mobile Conf 2015 - Testes de Unidade com Robolectric](https://reader030.vdocuments.us/reader030/viewer/2022032502/55ba9c07bb61eb47268b4746/html5/thumbnails/2.jpg)
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](https://reader030.vdocuments.us/reader030/viewer/2022032502/55ba9c07bb61eb47268b4746/html5/thumbnails/3.jpg)
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](https://reader030.vdocuments.us/reader030/viewer/2022032502/55ba9c07bb61eb47268b4746/html5/thumbnails/4.jpg)
Como vocês testam apps Android?
Pergunta:
![Page 5: Mobile Conf 2015 - Testes de Unidade com Robolectric](https://reader030.vdocuments.us/reader030/viewer/2022032502/55ba9c07bb61eb47268b4746/html5/thumbnails/5.jpg)
(a) Testes manuais
![Page 6: Mobile Conf 2015 - Testes de Unidade com Robolectric](https://reader030.vdocuments.us/reader030/viewer/2022032502/55ba9c07bb61eb47268b4746/html5/thumbnails/6.jpg)
(b) Testes pela UI
![Page 7: Mobile Conf 2015 - Testes de Unidade com Robolectric](https://reader030.vdocuments.us/reader030/viewer/2022032502/55ba9c07bb61eb47268b4746/html5/thumbnails/7.jpg)
(c) Testes de Unidade
![Page 8: Mobile Conf 2015 - Testes de Unidade com Robolectric](https://reader030.vdocuments.us/reader030/viewer/2022032502/55ba9c07bb61eb47268b4746/html5/thumbnails/8.jpg)
(d) Testes são para os fracos
![Page 9: Mobile Conf 2015 - Testes de Unidade com Robolectric](https://reader030.vdocuments.us/reader030/viewer/2022032502/55ba9c07bb61eb47268b4746/html5/thumbnails/9.jpg)
Pirâmide de Automação de Testes
![Page 10: Mobile Conf 2015 - Testes de Unidade com Robolectric](https://reader030.vdocuments.us/reader030/viewer/2022032502/55ba9c07bb61eb47268b4746/html5/thumbnails/10.jpg)
Pirâmide de Automação de Testes
(Mike Cohn - Succeeding With Agile)
![Page 11: Mobile Conf 2015 - Testes de Unidade com Robolectric](https://reader030.vdocuments.us/reader030/viewer/2022032502/55ba9c07bb61eb47268b4746/html5/thumbnails/11.jpg)
![Page 12: Mobile Conf 2015 - Testes de Unidade com Robolectric](https://reader030.vdocuments.us/reader030/viewer/2022032502/55ba9c07bb61eb47268b4746/html5/thumbnails/12.jpg)
↑ # de testes↑ feedback
↓ # de testes↓ feedback
![Page 13: Mobile Conf 2015 - Testes de Unidade com Robolectric](https://reader030.vdocuments.us/reader030/viewer/2022032502/55ba9c07bb61eb47268b4746/html5/thumbnails/13.jpg)
Mas e para apps Mobile?
![Page 14: Mobile Conf 2015 - Testes de Unidade com Robolectric](https://reader030.vdocuments.us/reader030/viewer/2022032502/55ba9c07bb61eb47268b4746/html5/thumbnails/14.jpg)
(Daniel Knott)http://www.ministryoftesting.com/2014/10/mobile-test-pyramid/
![Page 15: Mobile Conf 2015 - Testes de Unidade com Robolectric](https://reader030.vdocuments.us/reader030/viewer/2022032502/55ba9c07bb61eb47268b4746/html5/thumbnails/15.jpg)
↑ # 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](https://reader030.vdocuments.us/reader030/viewer/2022032502/55ba9c07bb61eb47268b4746/html5/thumbnails/16.jpg)
Podemos resolver isso com o Robolectric!
![Page 17: Mobile Conf 2015 - Testes de Unidade com Robolectric](https://reader030.vdocuments.us/reader030/viewer/2022032502/55ba9c07bb61eb47268b4746/html5/thumbnails/17.jpg)
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](https://reader030.vdocuments.us/reader030/viewer/2022032502/55ba9c07bb61eb47268b4746/html5/thumbnails/18.jpg)
![Page 19: Mobile Conf 2015 - Testes de Unidade com Robolectric](https://reader030.vdocuments.us/reader030/viewer/2022032502/55ba9c07bb61eb47268b4746/html5/thumbnails/19.jpg)
Como funciona?
Shadow Objects e
View Resource Loading
![Page 20: Mobile Conf 2015 - Testes de Unidade com Robolectric](https://reader030.vdocuments.us/reader030/viewer/2022032502/55ba9c07bb61eb47268b4746/html5/thumbnails/20.jpg)
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](https://reader030.vdocuments.us/reader030/viewer/2022032502/55ba9c07bb61eb47268b4746/html5/thumbnails/21.jpg)
http://www.slideshare.net/joemoore1/tdd-android-applications-with-robolectric
Shadow Objects
![Page 22: Mobile Conf 2015 - Testes de Unidade com Robolectric](https://reader030.vdocuments.us/reader030/viewer/2022032502/55ba9c07bb61eb47268b4746/html5/thumbnails/22.jpg)
Shadow Objects
Mas por que preciso usá-los?
![Page 23: Mobile Conf 2015 - Testes de Unidade com Robolectric](https://reader030.vdocuments.us/reader030/viewer/2022032502/55ba9c07bb61eb47268b4746/html5/thumbnails/23.jpg)
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](https://reader030.vdocuments.us/reader030/viewer/2022032502/55ba9c07bb61eb47268b4746/html5/thumbnails/24.jpg)
Que tipo de testes posso fazer com
Robolectric?
![Page 25: Mobile Conf 2015 - Testes de Unidade com Robolectric](https://reader030.vdocuments.us/reader030/viewer/2022032502/55ba9c07bb61eb47268b4746/html5/thumbnails/25.jpg)
![Page 26: Mobile Conf 2015 - Testes de Unidade com Robolectric](https://reader030.vdocuments.us/reader030/viewer/2022032502/55ba9c07bb61eb47268b4746/html5/thumbnails/26.jpg)
![Page 27: Mobile Conf 2015 - Testes de Unidade com Robolectric](https://reader030.vdocuments.us/reader030/viewer/2022032502/55ba9c07bb61eb47268b4746/html5/thumbnails/27.jpg)
![Page 28: Mobile Conf 2015 - Testes de Unidade com Robolectric](https://reader030.vdocuments.us/reader030/viewer/2022032502/55ba9c07bb61eb47268b4746/html5/thumbnails/28.jpg)
![Page 29: Mobile Conf 2015 - Testes de Unidade com Robolectric](https://reader030.vdocuments.us/reader030/viewer/2022032502/55ba9c07bb61eb47268b4746/html5/thumbnails/29.jpg)
Robolectricx
ActivityUnitTestCase
![Page 30: Mobile Conf 2015 - Testes de Unidade com Robolectric](https://reader030.vdocuments.us/reader030/viewer/2022032502/55ba9c07bb61eb47268b4746/html5/thumbnails/30.jpg)
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](https://reader030.vdocuments.us/reader030/viewer/2022032502/55ba9c07bb61eb47268b4746/html5/thumbnails/31.jpg)
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](https://reader030.vdocuments.us/reader030/viewer/2022032502/55ba9c07bb61eb47268b4746/html5/thumbnails/32.jpg)
Obrigado!