Ostatnio dotarłem do biblioteki mockito umożliwiającej tworzenie obiektów mock’owych w bardzo prosty sposów, mockowac można zarówno dla samych interfejsów jak i klas ostatecznych.

No to popatrzmy na przykładowy test:

@Test
public void test() throws Exception {
   Item item = new Item() {
      public String getName() {
           return "My name is...";
      }
   }
}

W tym prostym przypadku niby nei ma różnicy

a przy wykorzystaniu mockito:

@Test
public void test() throws Exception {
   Item item = mock(Item.class);
   when(item.getName()).thenReturn("Slim shady");
}

No niby nie ma różnicy, ale wyobraźmy sobie, ze interfejs ma 10 metod z których potrzbujemy do naszego przypadku testowego jedynie getName i jakie ono będzie nie ma większego znaczenia, ważne żeby zwracało to co chcemy.

Idzmy krok dalej – w projekcie nad którym obecnie pracuje cała masa rzeczy przechowywana jest w plikach xml, więc powiedzmy że dla każdego przypadku testowego trzeba edytować 3 pliki xml, po utowrzeniu odpowiedniej ilości testcase’ow nikomu nie chce się dodawać kolejnego i przedzierać przez gąszcz plików, z których część już dawno jest zdezaktualizowana.

No przykład jest prosty, ale taki też był zamysł tego wpisu – jako wstęp do analizy konkretnego przypadku i podzielenie sie paroma uwagami.