SlideShare uma empresa Scribd logo
1 de 15
Baixar para ler offline
Ferramentas para testes
JMockit & Hamcrest
Wednesday, July 3, 13
Porquê
Mocks ?
Wednesday, July 3, 13
Porquê mocks ?
* Queremos ignorar dependências de classes
relacionadas quando não são necessárias para
os nossos testes.
* Porque queremos testar código específico
sem termos que estar preocupados com outras
funcionalidades.
* Mais rápido escrever testes para legacy
code.
Wednesday, July 3, 13
Caso de uso
Aplicação
Servidor
Externo
Mocks
Request
Mocks
Response
Wednesday, July 3, 13
JMockit
Wednesday, July 3, 13
JMockit
JMockit é uma ferramenta para criar mocks,
que para além de fornecer as mesmas
funcionalidades que outras ferramentas,
permite fazer ainda:
* Mocks de classes final
* Mocks de métodos estáticos.
https://code.google.com/p/jmockit/
* Mocks de construtores
Wednesday, July 3, 13
Método de Teste:
@Test
public void test_something(){
new Expectations(){{
// Expectativas
}}
// code beeing executed
new Verifications(){{
// JUnit ou TestNG asserts
}}
}
Wednesday, July 3, 13
Expectation API
Verification API
* Um forma de podermos definir o
comportamento que pretendemos que os nossos
objectos mock tenham
* Forma de podermos verificar as chamadas
feitas aos nossos mock objects.
Wednesday, July 3, 13
Expectation API
new Expectations(){
MockedClass mock;
{
// Definição de expectativas
mock.someMethod(“sameArg”);
result = “someresult”
...
}
}
Wednesday, July 3, 13
Verifications API
new Verifications(){{
// Definição de expectativas
mock.someMethod(anyString);
times = 1
...
}}
Wednesday, July 3, 13
Hamcrest
Wednesday, July 3, 13
Hamcrest
* Pretende dar algum significado ao que
estamos a testar simplificando os nossos
testes por meio de matchers.
Configuration config = new Port80Configuration();
Server server = new server();
server.setConfiguration(config);
server.start();
assertThat(server, isListeningOnPort(80));
https://code.google.com/p/hamcrest/
Wednesday, July 3, 13
Hamcrest
public Matcher<? super Server> isListeningOnPort(false Integer port){
return new TypeSafeMatcher<Server>() {
@Override
protected boolean matchesSafely(Server server) {
// testar condição
return false;
}
@Override
public void describeTo(Description description) {
description.appendText(....); // Escreve em caso de falha a mensagem de erro
}
}
}
Wednesday, July 3, 13
Demo
TIMEWednesday, July 3, 13
Thank you!
@: hugo_marcelino
git: hmarcelino
Wednesday, July 3, 13

Mais conteúdo relacionado

Mais procurados

Apresentação lições aprendidas
Apresentação lições aprendidasApresentação lições aprendidas
Apresentação lições aprendidasricardojp
 
Apresentação lições aprendidas
Apresentação lições aprendidasApresentação lições aprendidas
Apresentação lições aprendidasricardojp
 
Você ainda não pratica TDD?
Você ainda não pratica TDD?Você ainda não pratica TDD?
Você ainda não pratica TDD?Maurício Aniche
 
OLED: Um ambiente para desenvolvimento, avaliação e implementação de ontologias
OLED: Um ambiente para desenvolvimento, avaliação e implementação de ontologiasOLED: Um ambiente para desenvolvimento, avaliação e implementação de ontologias
OLED: Um ambiente para desenvolvimento, avaliação e implementação de ontologiasEncontro em Computação Semântica
 
PHPExperience 2016 - Pirâmide de Testes
PHPExperience 2016 - Pirâmide de TestesPHPExperience 2016 - Pirâmide de Testes
PHPExperience 2016 - Pirâmide de TestesDiana Ungaro Arnos
 
Iterasys :: Café com Qualidade - Testadores Precisam Saber Programar?
Iterasys ::  Café com Qualidade - Testadores Precisam Saber Programar?Iterasys ::  Café com Qualidade - Testadores Precisam Saber Programar?
Iterasys :: Café com Qualidade - Testadores Precisam Saber Programar?José Correia
 
Test-Driven Development serve pra mim?
Test-Driven Development serve pra mim?Test-Driven Development serve pra mim?
Test-Driven Development serve pra mim?Maurício Aniche
 
Testes O que são e para que servem? - LadyTalks
Testes O que são e para que servem? - LadyTalksTestes O que são e para que servem? - LadyTalks
Testes O que são e para que servem? - LadyTalksDiana Ungaro Arnos
 

Mais procurados (10)

Unit Testing
Unit TestingUnit Testing
Unit Testing
 
Apresentação lições aprendidas
Apresentação lições aprendidasApresentação lições aprendidas
Apresentação lições aprendidas
 
Apresentação lições aprendidas
Apresentação lições aprendidasApresentação lições aprendidas
Apresentação lições aprendidas
 
Você ainda não pratica TDD?
Você ainda não pratica TDD?Você ainda não pratica TDD?
Você ainda não pratica TDD?
 
OLED: Um ambiente para desenvolvimento, avaliação e implementação de ontologias
OLED: Um ambiente para desenvolvimento, avaliação e implementação de ontologiasOLED: Um ambiente para desenvolvimento, avaliação e implementação de ontologias
OLED: Um ambiente para desenvolvimento, avaliação e implementação de ontologias
 
PHPExperience 2016 - Pirâmide de Testes
PHPExperience 2016 - Pirâmide de TestesPHPExperience 2016 - Pirâmide de Testes
PHPExperience 2016 - Pirâmide de Testes
 
Iterasys :: Café com Qualidade - Testadores Precisam Saber Programar?
Iterasys ::  Café com Qualidade - Testadores Precisam Saber Programar?Iterasys ::  Café com Qualidade - Testadores Precisam Saber Programar?
Iterasys :: Café com Qualidade - Testadores Precisam Saber Programar?
 
Testes de unidade - Conhecendo e aplicando
Testes de unidade - Conhecendo e aplicandoTestes de unidade - Conhecendo e aplicando
Testes de unidade - Conhecendo e aplicando
 
Test-Driven Development serve pra mim?
Test-Driven Development serve pra mim?Test-Driven Development serve pra mim?
Test-Driven Development serve pra mim?
 
Testes O que são e para que servem? - LadyTalks
Testes O que são e para que servem? - LadyTalksTestes O que são e para que servem? - LadyTalks
Testes O que são e para que servem? - LadyTalks
 

Destaque

An Introduction to Play 2 Framework
An Introduction to Play 2 FrameworkAn Introduction to Play 2 Framework
An Introduction to Play 2 FrameworkPT.JUG
 
metrics - performance monitoring or business value optimization?
metrics - performance monitoring or business value optimization?metrics - performance monitoring or business value optimization?
metrics - performance monitoring or business value optimization?João Nelas
 
JBoss Brings More Power to your Business Processes (PTJUG)
JBoss Brings More Power to your Business Processes (PTJUG)JBoss Brings More Power to your Business Processes (PTJUG)
JBoss Brings More Power to your Business Processes (PTJUG)Eric D. Schabell
 
Apache Camel
Apache CamelApache Camel
Apache CamelPT.JUG
 
What's Coming in Java EE 8
What's Coming in Java EE 8What's Coming in Java EE 8
What's Coming in Java EE 8PT.JUG
 
Introducing Java 8
Introducing Java 8Introducing Java 8
Introducing Java 8PT.JUG
 
An OpenShift Primer for Developers to get your Code into the Cloud (PTJUG)
An OpenShift Primer for Developers to get your Code into the Cloud (PTJUG)An OpenShift Primer for Developers to get your Code into the Cloud (PTJUG)
An OpenShift Primer for Developers to get your Code into the Cloud (PTJUG)Eric D. Schabell
 
Introducing Infinispan
Introducing InfinispanIntroducing Infinispan
Introducing InfinispanPT.JUG
 
Using JPA applications in the era of NoSQL: Introducing Hibernate OGM
Using JPA applications in the era of NoSQL: Introducing Hibernate OGMUsing JPA applications in the era of NoSQL: Introducing Hibernate OGM
Using JPA applications in the era of NoSQL: Introducing Hibernate OGMPT.JUG
 
Microservices
MicroservicesMicroservices
MicroservicesPT.JUG
 
50 new features of Java EE 7 in 50 minutes
50 new features of Java EE 7 in 50 minutes50 new features of Java EE 7 in 50 minutes
50 new features of Java EE 7 in 50 minutesAntonio Goncalves
 
Java EE 7 Batch processing in the Real World
Java EE 7 Batch processing in the Real WorldJava EE 7 Batch processing in the Real World
Java EE 7 Batch processing in the Real WorldRoberto Cortez
 

Destaque (15)

MySQL
MySQLMySQL
MySQL
 
An Introduction to Play 2 Framework
An Introduction to Play 2 FrameworkAn Introduction to Play 2 Framework
An Introduction to Play 2 Framework
 
metrics - performance monitoring or business value optimization?
metrics - performance monitoring or business value optimization?metrics - performance monitoring or business value optimization?
metrics - performance monitoring or business value optimization?
 
JBoss Brings More Power to your Business Processes (PTJUG)
JBoss Brings More Power to your Business Processes (PTJUG)JBoss Brings More Power to your Business Processes (PTJUG)
JBoss Brings More Power to your Business Processes (PTJUG)
 
JMockit
JMockitJMockit
JMockit
 
Apache Camel
Apache CamelApache Camel
Apache Camel
 
What's Coming in Java EE 8
What's Coming in Java EE 8What's Coming in Java EE 8
What's Coming in Java EE 8
 
Introducing Java 8
Introducing Java 8Introducing Java 8
Introducing Java 8
 
An OpenShift Primer for Developers to get your Code into the Cloud (PTJUG)
An OpenShift Primer for Developers to get your Code into the Cloud (PTJUG)An OpenShift Primer for Developers to get your Code into the Cloud (PTJUG)
An OpenShift Primer for Developers to get your Code into the Cloud (PTJUG)
 
Introducing Infinispan
Introducing InfinispanIntroducing Infinispan
Introducing Infinispan
 
Using JPA applications in the era of NoSQL: Introducing Hibernate OGM
Using JPA applications in the era of NoSQL: Introducing Hibernate OGMUsing JPA applications in the era of NoSQL: Introducing Hibernate OGM
Using JPA applications in the era of NoSQL: Introducing Hibernate OGM
 
Microservices
MicroservicesMicroservices
Microservices
 
CDI: How do I ?
CDI: How do I ?CDI: How do I ?
CDI: How do I ?
 
50 new features of Java EE 7 in 50 minutes
50 new features of Java EE 7 in 50 minutes50 new features of Java EE 7 in 50 minutes
50 new features of Java EE 7 in 50 minutes
 
Java EE 7 Batch processing in the Real World
Java EE 7 Batch processing in the Real WorldJava EE 7 Batch processing in the Real World
Java EE 7 Batch processing in the Real World
 

Semelhante a Testes com JMockit e Hamcrest

Descomplicando os mocks
Descomplicando os mocksDescomplicando os mocks
Descomplicando os mocksDouglas Bastos
 
Android DevConference - Automatizando testes sem sofrimento
Android DevConference - Automatizando testes sem sofrimentoAndroid DevConference - Automatizando testes sem sofrimento
Android DevConference - Automatizando testes sem sofrimentoiMasters
 
Teste de Integração - Unidade III
Teste de Integração - Unidade IIITeste de Integração - Unidade III
Teste de Integração - Unidade IIIJoão Lourenço
 
Mock objects - Teste de código com dependências
Mock objects - Teste de código com dependênciasMock objects - Teste de código com dependências
Mock objects - Teste de código com dependênciasDenis L Presciliano
 
Desenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por TestesDesenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por TestesCamilo Ribeiro
 
Testes de Unidade com Junit
Testes de Unidade com JunitTestes de Unidade com Junit
Testes de Unidade com Junitcejug
 

Semelhante a Testes com JMockit e Hamcrest (10)

Descomplicando os mocks
Descomplicando os mocksDescomplicando os mocks
Descomplicando os mocks
 
Robotium_Sikuli
Robotium_SikuliRobotium_Sikuli
Robotium_Sikuli
 
Testes: Por onde Começar?
Testes: Por onde Começar?Testes: Por onde Começar?
Testes: Por onde Começar?
 
Android DevConference - Automatizando testes sem sofrimento
Android DevConference - Automatizando testes sem sofrimentoAndroid DevConference - Automatizando testes sem sofrimento
Android DevConference - Automatizando testes sem sofrimento
 
Teste de Integração - Unidade III
Teste de Integração - Unidade IIITeste de Integração - Unidade III
Teste de Integração - Unidade III
 
Mocking Test
Mocking TestMocking Test
Mocking Test
 
Power mock
Power mockPower mock
Power mock
 
Mock objects - Teste de código com dependências
Mock objects - Teste de código com dependênciasMock objects - Teste de código com dependências
Mock objects - Teste de código com dependências
 
Desenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por TestesDesenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por Testes
 
Testes de Unidade com Junit
Testes de Unidade com JunitTestes de Unidade com Junit
Testes de Unidade com Junit
 

Mais de PT.JUG

Overview of Eclipse technologies
Overview of Eclipse technologiesOverview of Eclipse technologies
Overview of Eclipse technologiesPT.JUG
 
Putting Hypermedia Back in REST with JAX-RS
Putting Hypermedia Back in REST with JAX-RSPutting Hypermedia Back in REST with JAX-RS
Putting Hypermedia Back in REST with JAX-RSPT.JUG
 
Useful Design Patterns for Enterprise Applications with Java
Useful Design Patterns for Enterprise Applications with JavaUseful Design Patterns for Enterprise Applications with Java
Useful Design Patterns for Enterprise Applications with JavaPT.JUG
 
Flame Graphs, uma (boa) alternativa para profiling de apps Java
Flame Graphs, uma (boa) alternativa para profiling de apps JavaFlame Graphs, uma (boa) alternativa para profiling de apps Java
Flame Graphs, uma (boa) alternativa para profiling de apps JavaPT.JUG
 
To SOA or not to SOA
To SOA or not to SOATo SOA or not to SOA
To SOA or not to SOAPT.JUG
 
Introduction to Grails Framework
Introduction to Grails FrameworkIntroduction to Grails Framework
Introduction to Grails FrameworkPT.JUG
 
Apresentação LifeRay
Apresentação LifeRayApresentação LifeRay
Apresentação LifeRayPT.JUG
 
Oracle Java Strategy Lg V3
Oracle Java Strategy Lg V3Oracle Java Strategy Lg V3
Oracle Java Strategy Lg V3PT.JUG
 
Scripting na JVM
Scripting na JVMScripting na JVM
Scripting na JVMPT.JUG
 
The tale of the Fénix architecture
The tale of the Fénix architectureThe tale of the Fénix architecture
The tale of the Fénix architecturePT.JUG
 
Lightweight Grids With Terracotta
Lightweight Grids With TerracottaLightweight Grids With Terracotta
Lightweight Grids With TerracottaPT.JUG
 
Google Web Toolkit
Google Web ToolkitGoogle Web Toolkit
Google Web ToolkitPT.JUG
 
Developers Java: O que as empresas dizem que precisam mesmo mesmo
Developers Java: O que as empresas dizem que precisam mesmo mesmoDevelopers Java: O que as empresas dizem que precisam mesmo mesmo
Developers Java: O que as empresas dizem que precisam mesmo mesmoPT.JUG
 

Mais de PT.JUG (13)

Overview of Eclipse technologies
Overview of Eclipse technologiesOverview of Eclipse technologies
Overview of Eclipse technologies
 
Putting Hypermedia Back in REST with JAX-RS
Putting Hypermedia Back in REST with JAX-RSPutting Hypermedia Back in REST with JAX-RS
Putting Hypermedia Back in REST with JAX-RS
 
Useful Design Patterns for Enterprise Applications with Java
Useful Design Patterns for Enterprise Applications with JavaUseful Design Patterns for Enterprise Applications with Java
Useful Design Patterns for Enterprise Applications with Java
 
Flame Graphs, uma (boa) alternativa para profiling de apps Java
Flame Graphs, uma (boa) alternativa para profiling de apps JavaFlame Graphs, uma (boa) alternativa para profiling de apps Java
Flame Graphs, uma (boa) alternativa para profiling de apps Java
 
To SOA or not to SOA
To SOA or not to SOATo SOA or not to SOA
To SOA or not to SOA
 
Introduction to Grails Framework
Introduction to Grails FrameworkIntroduction to Grails Framework
Introduction to Grails Framework
 
Apresentação LifeRay
Apresentação LifeRayApresentação LifeRay
Apresentação LifeRay
 
Oracle Java Strategy Lg V3
Oracle Java Strategy Lg V3Oracle Java Strategy Lg V3
Oracle Java Strategy Lg V3
 
Scripting na JVM
Scripting na JVMScripting na JVM
Scripting na JVM
 
The tale of the Fénix architecture
The tale of the Fénix architectureThe tale of the Fénix architecture
The tale of the Fénix architecture
 
Lightweight Grids With Terracotta
Lightweight Grids With TerracottaLightweight Grids With Terracotta
Lightweight Grids With Terracotta
 
Google Web Toolkit
Google Web ToolkitGoogle Web Toolkit
Google Web Toolkit
 
Developers Java: O que as empresas dizem que precisam mesmo mesmo
Developers Java: O que as empresas dizem que precisam mesmo mesmoDevelopers Java: O que as empresas dizem que precisam mesmo mesmo
Developers Java: O que as empresas dizem que precisam mesmo mesmo
 

Testes com JMockit e Hamcrest