SlideShare ist ein Scribd-Unternehmen logo
1 von 15
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Was ist angesagt?

Apresentação lições aprendidas
Apresentação lições aprendidasApresentação lições aprendidas
Apresentação lições aprendidas
ricardojp
 
Apresentação lições aprendidas
Apresentação lições aprendidasApresentação lições aprendidas
Apresentação lições aprendidas
ricardojp
 

Was ist angesagt? (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
 

Andere mochten auch

Andere mochten auch (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
 

Ähnlich wie JMockit & Hamcrest

Ähnlich wie JMockit & 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
 

Mehr von PT.JUG

Mehr von 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
 

JMockit & Hamcrest