Manual mocks can be valuable

Summary: replacing a jMock with a hand-crafted fake led to an absurdly simple, and better, solution

L’altro giorno ho dovuto portare un progetto Java su un nuovo PC, sul
quale non era installata una versione molto recente di Java. Ho
scoperto allora che l’ultima versione di jMock richiede Java 1.5.
Visto che in quel progetto usavo un mock solo, piuttosto che scaricare
e installare un nuovo JDK ho provato a mockare manualmente; cioè ho
definito una

 class FakePdfWriter implements PdfWriter {
 }

e ho lasciato che Eclipse generasse stub per tutti i metodi
dell’interfaccia PdfWriter. Poi ho aggiunto alcuni campi per
registrare quali chiamate erano state fatte, tipo

 class FakePdfWriter implements PdfWriter {
  public List strings = new ArrayList();

  public void writeThis(String text, int llx, int lly, 
                               int urx, int ury) {
     strings.add(text); // don't care about coords
  }
 }

Devo dire che il risultato alla fine, anche se non era preciso come un
jMock, era più flessibile e facile da usare. Da quando ho questo fake
l’ho usato per supportarmi in una serie di altri test che prima ero
riluttante a scrivere. La soddisfazione è che in confronto a jMock è
assurdamente semplice

Aggiornamento: c’è un articolo Unit Testing With Hand Crafted Mocks su questo argomento.

One Response to “Manual mocks can be valuable”

  1. Matteo Vaccari » Blog Archive » To mock or not to mock Says:

    […] meglio usare un mock fatto a mano, piuttosto che un jMock o simili […]

Leave a Reply