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

JMockit & Hamcrest