SlideShare a Scribd company logo
1 of 32
Download to read offline
Globalcode – Open4education
Testes de Unidade com
Robolectric
Lucas Albuquerque / Stefan Teixeira
lucas.albuquerque12@gmail.com / stefanfk@gmail.com
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
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
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 method
of 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 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
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?
Robolectric
x
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!

More Related Content

Similar to TDC 2015 - Testes de Unidade com Robolectric

Similar to TDC 2015 - Testes de Unidade com Robolectric (20)

UAI Test - Introdução Prática ao Jenkins
UAI Test - Introdução Prática ao JenkinsUAI Test - Introdução Prática ao Jenkins
UAI Test - Introdução Prática ao Jenkins
 
Agileze seus testes com automacao e grid
Agileze seus testes com automacao e gridAgileze seus testes com automacao e grid
Agileze seus testes com automacao e grid
 
Aplicativos hibridos-com-ionic-voce-tambem-pode-comecar-a-desenvolver-agora-t...
Aplicativos hibridos-com-ionic-voce-tambem-pode-comecar-a-desenvolver-agora-t...Aplicativos hibridos-com-ionic-voce-tambem-pode-comecar-a-desenvolver-agora-t...
Aplicativos hibridos-com-ionic-voce-tambem-pode-comecar-a-desenvolver-agora-t...
 
Machine Learning Black Boxes
Machine Learning Black BoxesMachine Learning Black Boxes
Machine Learning Black Boxes
 
TDC2016SP - Machine Learning Black Boxes - Terceirizando o Trabalho Duro
TDC2016SP - Machine Learning Black Boxes - Terceirizando o Trabalho DuroTDC2016SP - Machine Learning Black Boxes - Terceirizando o Trabalho Duro
TDC2016SP - Machine Learning Black Boxes - Terceirizando o Trabalho Duro
 
TDC 2015 Floripa - Visual Regression Testing em ambientes na nuvem
TDC 2015 Floripa - Visual Regression Testing em ambientes na nuvemTDC 2015 Floripa - Visual Regression Testing em ambientes na nuvem
TDC 2015 Floripa - Visual Regression Testing em ambientes na nuvem
 
Agile Brazil 2014 - Visual Regression Testing com PhantomCSS
Agile Brazil 2014 - Visual Regression Testing com PhantomCSSAgile Brazil 2014 - Visual Regression Testing com PhantomCSS
Agile Brazil 2014 - Visual Regression Testing com PhantomCSS
 
TDC 2016 SP - Desmistificando cobertura de código como métrica de qualidade
TDC 2016 SP - Desmistificando cobertura de código como métrica de qualidadeTDC 2016 SP - Desmistificando cobertura de código como métrica de qualidade
TDC 2016 SP - Desmistificando cobertura de código como métrica de qualidade
 
Scrum Gathering Rio 2015 - Testando na nuvem a UI e o JavaScript de sua aplic...
Scrum Gathering Rio 2015 - Testando na nuvem a UI e o JavaScript de sua aplic...Scrum Gathering Rio 2015 - Testando na nuvem a UI e o JavaScript de sua aplic...
Scrum Gathering Rio 2015 - Testando na nuvem a UI e o JavaScript de sua aplic...
 
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
 
Apresentacao artigo final
Apresentacao artigo finalApresentacao artigo final
Apresentacao artigo final
 
Apresentação do Projeto PRIME SCRUM. trabalho final do curso de Análise e Des...
Apresentação do Projeto PRIME SCRUM. trabalho final do curso de Análise e Des...Apresentação do Projeto PRIME SCRUM. trabalho final do curso de Análise e Des...
Apresentação do Projeto PRIME SCRUM. trabalho final do curso de Análise e Des...
 
Trabalhando de forma profissional com silex
Trabalhando de forma profissional com silexTrabalhando de forma profissional com silex
Trabalhando de forma profissional com silex
 
Comparando as Hypes - React & Vue
Comparando as Hypes - React & VueComparando as Hypes - React & Vue
Comparando as Hypes - React & Vue
 
Isla workshop 2015-03-08
Isla workshop 2015-03-08Isla workshop 2015-03-08
Isla workshop 2015-03-08
 
Apresentação Meetup Faccilita Corretor Google Brasil - 01/03/2016
Apresentação Meetup Faccilita Corretor Google Brasil - 01/03/2016Apresentação Meetup Faccilita Corretor Google Brasil - 01/03/2016
Apresentação Meetup Faccilita Corretor Google Brasil - 01/03/2016
 
Minicurso Intel XDK
Minicurso Intel XDKMinicurso Intel XDK
Minicurso Intel XDK
 
Minicurso Intel XDK
Minicurso Intel XDKMinicurso Intel XDK
Minicurso Intel XDK
 
[GUTS-RS] Práticas de desenvolvimento aplicadas na automação de testes com Se...
[GUTS-RS] Práticas de desenvolvimento aplicadas na automação de testes com Se...[GUTS-RS] Práticas de desenvolvimento aplicadas na automação de testes com Se...
[GUTS-RS] Práticas de desenvolvimento aplicadas na automação de testes com Se...
 
Docker | Minicurso Gratuito - Azure na Prática
Docker | Minicurso Gratuito - Azure na PráticaDocker | Minicurso Gratuito - Azure na Prática
Docker | Minicurso Gratuito - Azure na Prática
 

TDC 2015 - Testes de Unidade com Robolectric