Przeczytałem mnóstwo artykułów, widziałem mnóstwo screencastów na temat TDD, ale wciąż mam problemy z używaniem go w rzeczywistym projekcie. Moim głównym problemem jest to, że nie wiem od czego zacząć, jaki test powinien być pierwszy. Załóżmy, że muszę napisać bibliotekę klienta wywołującą metody systemu zewnętrznego (np. Powiadomienie). Chcę to klient do pracy w następujący sposóbJak wybrać punkt początkowy TDD w realnym projekcie?
NotificationClient client = new NotificationClient("abcd1234"); // client ID
Response code = client.notifyOnEvent(Event.LIMIT_REACHED, 100); // some params of call
Istnieją pewne tłumaczenie i przygotowanie Format wiadomość za kulisami, więc chciałbym, aby ukryć go z moich aplikacji klienckich.
Nie wiem, gdzie i jak zacząć. Czy powinienem wymyślić jakieś surowe klasy ustawione dla tej biblioteki? powinienem zacząć od testowania NotificationClient jak poniżej
public void testClientSendInvalidEventCommand() {
NotificationClient client = new NotificationClient(...);
Response code = client.notifyOnEvent(Event.WRONG_EVENT);
assertEquals(1223, code.codeValue());
}
Jeśli tak, to z takim teście jestem zmuszony napisać pełną realizację pracy od razu, bez raczkujemy jak stany TDD. Mogę wyśmiewać sosmething w Clientie, ale potem muszę wiedzieć, że to jest kpina z góry, więc potrzebuję jakiegoś wstępnego projektu.
Może powinienem zacząć od początku, najpierw przetestować ten komponent formatowania wiadomości, a następnie użyć go we właściwym teście klienta?
Jaką drogę wybrać? Czy zawsze powinniśmy zaczynać od początku (jak radzić sobie z tym ogromnym krokiem)? Czy możemy zacząć od dowolnej klasy realizującej malutką część pożądanej funkcji (jak w tym przykładzie Formatter)?
Gdybym wiedział, gdzie uderzyć z moimi testami, byłoby mi znacznie łatwiej przejść dalej.
Ale jak znaleźć te klasy, aby pisać testy jednostek i od czego zacząć? Przypuszczam, że muszę mieć ustawione pewne klasy, aby móc wybrać punkt startowy dla TDD. Ale gdzie powinien być ten punkt? Czy powinien znajdować się na krawędziach systemu, czy może znajdować się w środku systemu - jak wspomniany jest Formatter? –
Możesz TDD od dołu do góry lub z góry na dół. Nie widzę, jak formatter pasuje do twojego przykładu. Biorąc pod uwagę test, powinieneś napisać ** minimum ** ilości kodu niezbędnego do wydania. –