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.
*...
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 ferramen...
Método de Teste:
@Test
public void test_something(){
new Expectations(){{
// Expectativas
}}
// code beeing executed
new V...
Expectation API
Verification API
* Um forma de podermos definir o
comportamento que pretendemos que os nossos
objectos moc...
Expectation API
new Expectations(){
MockedClass mock;
{
// Definição de expectativas
mock.someMethod(“sameArg”);
result = ...
Verifications API
new Verifications(){{
// Definição de expectativas
mock.someMethod(anyString);
times = 1
...
}}
Wednesda...
Hamcrest
Wednesday, July 3, 13
Hamcrest
* Pretende dar algum significado ao que
estamos a testar simplificando os nossos
testes por meio de matchers.
Con...
Hamcrest
public Matcher<? super Server> isListeningOnPort(false Integer port){
return new TypeSafeMatcher<Server>() {
@Ove...
Demo
TIMEWednesday, July 3, 13
Thank you!
@: hugo_marcelino
git: hmarcelino
Wednesday, July 3, 13
Upcoming SlideShare
Loading in …5
×

JMockit & Hamcrest

1,841 views
1,748 views

Published on

Apresentação de Hugo Marcelino - 11º encontro PT.JUG.

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,841
On SlideShare
0
From Embeds
0
Number of Embeds
1,151
Actions
Shares
0
Downloads
8
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

JMockit & Hamcrest

  1. 1. Ferramentas para testes JMockit & Hamcrest Wednesday, July 3, 13
  2. 2. Porquê Mocks ? Wednesday, July 3, 13
  3. 3. 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
  4. 4. Caso de uso Aplicação Servidor Externo Mocks Request Mocks Response Wednesday, July 3, 13
  5. 5. JMockit Wednesday, July 3, 13
  6. 6. 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
  7. 7. 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
  8. 8. 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
  9. 9. Expectation API new Expectations(){ MockedClass mock; { // Definição de expectativas mock.someMethod(“sameArg”); result = “someresult” ... } } Wednesday, July 3, 13
  10. 10. Verifications API new Verifications(){{ // Definição de expectativas mock.someMethod(anyString); times = 1 ... }} Wednesday, July 3, 13
  11. 11. Hamcrest Wednesday, July 3, 13
  12. 12. 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
  13. 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
  14. 14. Demo TIMEWednesday, July 3, 13
  15. 15. Thank you! @: hugo_marcelino git: hmarcelino Wednesday, July 3, 13

×