SlideShare uma empresa Scribd logo
1 de 32
Baixar para ler offline
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
• Twitter: twitter.com/lucas_albq
• Facebook: facebook.com/olucasalbuquerque
• LinkedIn: linkedin.com/in/lucasalbuquerque
• GitHub: github.com/lalbuquerque
• SlideShare: slideshare.net/olucasalbuquerque
About Stefan
Stefan Teixeira
• QA / DevOps
• 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
Pirâmide de Automação de Testes
(Mike Cohn - Succeeding With Agile)
↑ # de testes
↑ feedback
↓ # de testes
↓ feedback
Mas e para apps
Mobile?
(Daniel Knott)
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"
(Daniel Knott)
http://www.ministryoftesting.com/2014/10/mobile-test-pyramid/
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
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
Obrigado!

Mais conteúdo relacionado

Destaque

2014 t4 w3 current affairs
2014 t4 w3 current affairs2014 t4 w3 current affairs
2014 t4 w3 current affairsbcpscurrent
 
Deportes extremos
Deportes extremosDeportes extremos
Deportes extremos1992Darwin
 
034 ekstremnisportove esp-2908
034 ekstremnisportove esp-2908034 ekstremnisportove esp-2908
034 ekstremnisportove esp-2908OzkaR1994
 
Constructos tpack
Constructos tpackConstructos tpack
Constructos tpackizzyzp
 
Como navegar correctamente en el siver espacio
Como navegar correctamente en el siver espacio Como navegar correctamente en el siver espacio
Como navegar correctamente en el siver espacio clashof
 

Destaque (6)

Deportes extremos
Deportes extremosDeportes extremos
Deportes extremos
 
2014 t4 w3 current affairs
2014 t4 w3 current affairs2014 t4 w3 current affairs
2014 t4 w3 current affairs
 
Deportes extremos
Deportes extremosDeportes extremos
Deportes extremos
 
034 ekstremnisportove esp-2908
034 ekstremnisportove esp-2908034 ekstremnisportove esp-2908
034 ekstremnisportove esp-2908
 
Constructos tpack
Constructos tpackConstructos tpack
Constructos tpack
 
Como navegar correctamente en el siver espacio
Como navegar correctamente en el siver espacio Como navegar correctamente en el siver espacio
Como navegar correctamente en el siver espacio
 

Semelhante a Mobile Conf 2015 - Testes de Unidade com Robolectric

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 JenkinsStefan Teixeira
 
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 nuvemStefan Teixeira
 
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...Marcelo Marques Gonçalves
 
Angular5, vue js ou react redux (Trilha de Javascript - TDC 2018 )
Angular5, vue js ou react redux (Trilha de Javascript - TDC 2018 )Angular5, vue js ou react redux (Trilha de Javascript - TDC 2018 )
Angular5, vue js ou react redux (Trilha de Javascript - TDC 2018 )Getúlio Strapazzon
 
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 PhantomCSSStefan Teixeira
 
Visual Regression Testing em ambientes na nuvem - Stefan Teixeira
Visual Regression Testing em ambientes na nuvem - Stefan Teixeira Visual Regression Testing em ambientes na nuvem - Stefan Teixeira
Visual Regression Testing em ambientes na nuvem - Stefan Teixeira minastestingconference
 
Minas Testing Conference 2015 - Visual Regression Testing em ambientes na nuvem
Minas Testing Conference 2015 - Visual Regression Testing em ambientes na nuvemMinas Testing Conference 2015 - Visual Regression Testing em ambientes na nuvem
Minas Testing Conference 2015 - Visual Regression Testing em ambientes na nuvemStefan Teixeira
 
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 gridElias Nogueira
 
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 Durotdc-globalcode
 
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 qualidadeStefan Teixeira
 
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áticaRenato Groff
 
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWS
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWSAcelerando a entrega de software com as ferramentas de desenvolvimento da AWS
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWSAmazon Web Services LATAM
 
Jornada de Tecnologia da Informação
Jornada de Tecnologia da InformaçãoJornada de Tecnologia da Informação
Jornada de Tecnologia da Informaçãotoshikurauchi
 
[Curso Java Básico] Aula 08: Instalando uma IDE (Eclipse e Netbeans) no Windo...
[Curso Java Básico] Aula 08: Instalando uma IDE (Eclipse e Netbeans) no Windo...[Curso Java Básico] Aula 08: Instalando uma IDE (Eclipse e Netbeans) no Windo...
[Curso Java Básico] Aula 08: Instalando uma IDE (Eclipse e Netbeans) no Windo...Loiane Groner
 
Trabalhando de forma profissional com silex
Trabalhando de forma profissional com silexTrabalhando de forma profissional com silex
Trabalhando de forma profissional com silexMichael Douglas
 
TDC 2016 Floripa - Aprendendo Docker sem bruxaria
TDC 2016 Floripa - Aprendendo Docker sem bruxariaTDC 2016 Floripa - Aprendendo Docker sem bruxaria
TDC 2016 Floripa - Aprendendo Docker sem bruxariaStefan Teixeira
 
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...Daniel Makiyama
 
Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019
Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019
Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019Renato Groff
 

Semelhante a Mobile Conf 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
 
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
 
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...
 
Angular5, vue js ou react redux (Trilha de Javascript - TDC 2018 )
Angular5, vue js ou react redux (Trilha de Javascript - TDC 2018 )Angular5, vue js ou react redux (Trilha de Javascript - TDC 2018 )
Angular5, vue js ou react redux (Trilha de Javascript - TDC 2018 )
 
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
 
Visual Regression Testing em ambientes na nuvem - Stefan Teixeira
Visual Regression Testing em ambientes na nuvem - Stefan Teixeira Visual Regression Testing em ambientes na nuvem - Stefan Teixeira
Visual Regression Testing em ambientes na nuvem - Stefan Teixeira
 
Minas Testing Conference 2015 - Visual Regression Testing em ambientes na nuvem
Minas Testing Conference 2015 - Visual Regression Testing em ambientes na nuvemMinas Testing Conference 2015 - Visual Regression Testing em ambientes na nuvem
Minas Testing Conference 2015 - Visual Regression Testing em ambientes na nuvem
 
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
 
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 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
 
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
 
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWS
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWSAcelerando a entrega de software com as ferramentas de desenvolvimento da AWS
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWS
 
Jornada de Tecnologia da Informação
Jornada de Tecnologia da InformaçãoJornada de Tecnologia da Informação
Jornada de Tecnologia da Informação
 
[Curso Java Básico] Aula 08: Instalando uma IDE (Eclipse e Netbeans) no Windo...
[Curso Java Básico] Aula 08: Instalando uma IDE (Eclipse e Netbeans) no Windo...[Curso Java Básico] Aula 08: Instalando uma IDE (Eclipse e Netbeans) no Windo...
[Curso Java Básico] Aula 08: Instalando uma IDE (Eclipse e Netbeans) no Windo...
 
Trabalhando de forma profissional com silex
Trabalhando de forma profissional com silexTrabalhando de forma profissional com silex
Trabalhando de forma profissional com silex
 
TDC 2016 Floripa - Aprendendo Docker sem bruxaria
TDC 2016 Floripa - Aprendendo Docker sem bruxariaTDC 2016 Floripa - Aprendendo Docker sem bruxaria
TDC 2016 Floripa - Aprendendo Docker sem bruxaria
 
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...
 
Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019
Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019
Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019
 
Minicurso Intel XDK
Minicurso Intel XDKMinicurso Intel XDK
Minicurso Intel XDK
 

Mobile Conf 2015 - Testes de Unidade com Robolectric