Jestem początkującym programistą, w szczególności dla rozwoju i testów jednostkowych. Domyślam się, że moje wymagania są dość proste, ale chętnie znam inne myśli na ten temat.Prześmiewanie zmiennych członków klasy przy użyciu Mockito
Załóżmy, że mam dwie klasy - tak jak
public class First {
Second second ;
public First(){
second = new Second();
}
public String doSecond(){
return second.doSecond();
}
}
class Second {
public String doSecond(){
return "Do Something";
}
}
powiedzmy piszę badanej jednostki przetestować First.doSecond()
metody. Jednak przypuśćmy, że chcę wykpić klasę Second.doSecond()
. Używam Mockito, aby to zrobić.
public void testFirst(){
Second sec = mock(Second.class);
when(sec.doSecond()).thenReturn("Stubbed Second");
First first = new First();
assertEquals("Stubbed Second", first.doSecond());
}
Widzę, że szyderstwo nie przynosi skutku, a twierdzenie nie powiedzie się. Czy nie można kpić z zmiennych członkowskich klasy, którą chcę przetestować. ?
Dzięki. Widzę to. Zastanawiam się tylko, jak mogę wtedy przeprowadzić testy integracyjne za pomocą makiety, gdzie może być wiele wewnętrznych metod, klas, które mogą wymagać kpiny, ale niekoniecznie dostępne, aby być ustawione przez setXXX() przed ręką. –
Użyj szkieletu wtrysku zależności, z konfiguracją testu. Sporządź diagram sekwencji testu integracji, który próbujesz wykonać. Zanurz diagram sekwencji w obiektach, które możesz kontrolować. Oznacza to, że jeśli pracujesz z klasą szkieletową, która ma przeciwny wzorzec obiektu zależnego, który pokazałeś powyżej, powinieneś traktować obiekt i jego źle skomponowany element jako pojedynczą jednostkę pod względem diagramu sekwencji. Bądź przygotowany, aby dostosować faktoring dowolnego kodu, który kontrolujesz, aby był bardziej sprawdzalny. – kittylyst
Drogi @kittylyst, tak prawdopodobnie jest on błędny z punktu widzenia TDD lub z dowolnego racjonalnego punktu widzenia. Czasami jednak programista działa w miejscach, w których nic nie ma sensu, a jedynym celem, jaki ma się do spełnienia, jest ukończenie przypisanych historii i odejście. Tak, to jest złe, nie ma sensu, niewykwalifikowani ludzie podejmują kluczowe decyzje i wszystkie te rzeczy. Pod koniec dnia anty-wzorce wygrywają bardzo często. – amanas