Zdecydowanie. Niektórzy twierdzą, że „każdy test jest lepszy niż brak testu”. Zdecydowanie się nie zgadzam - źle napisane testy skracają czas projektowania, a ty tracisz dni na naprawianie „zepsutych” testów, ponieważ nie były to dobre testy jednostkowe. W tej chwili dwie rzeczy, na których skupiam się, aby moje testy były cenne, a nie obciążenie, to:
Konserwowalność
Powinieneś testować wynik ( co się dzieje), a nie metodę ( jak to się dzieje). Twoja konfiguracja do testu powinna być możliwie jak najbardziej oddzielona od implementacji: ustaw wyniki tylko dla zgłoszeń serwisowych itp., Które są absolutnie konieczne.
- Użyj kpiny, aby upewnić się, że twoje testy nie zależą od niczego zewnętrznego
- Jeśli to możliwe, faworyzuj kody pośredniczące nad próbnymi (jeśli Twoja struktura je rozróżnia)
- Brak logiki w testach! Ifs, przełączniki, for-eaches, sprawy, try-catch itp. Są dużymi „nie-nosami”, ponieważ mogą wprowadzać błędy w samym kodzie testowym
Czytelność
Można pozwolić na nieco więcej powtórzeń w testach, co normalnie nie byłoby dozwolone w kodzie produkcyjnym, jeśli dzięki temu są bardziej czytelne. Po prostu zrównoważy to powyższymi zagadnieniami dotyczącymi konserwacji. Wyraźnie określ, co robi test!
- Staraj się zachować styl „aranżuj, działaj, potwierdzaj” dla swoich testów. To oddziela twoją konfigurację i oczekiwania od scenariusza, od wykonywanej akcji i potwierdzanego wyniku.
- Zachowaj jedno logiczne potwierdzenie na test (jeśli nazwa testu zawiera „i”, może być konieczne rozbicie go na wiele testów)
Podsumowując, powinieneś bardzo martwić się „śmierdzącymi” testami - mogą skończyć się stratą czasu, nie zapewniając żadnej wartości.
Powiedziałeś:
Testowanie jednostkowe zwykle wymaga różnych „śmierdzących hacków”, takich jak funkcje stubowania.
Wygląda na to, że na pewno możesz zrobić to, czytając niektóre techniki Testowania Jednostkowego, takie jak korzystanie z frameworka Mocking, aby Twoje życie było o wiele łatwiejsze. Bardzo bardzo polecam Art of Unit Testing , który obejmuje powyższe i wiele więcej. Uznałem to za pouczające po długim zmaganiu się ze źle napisanymi, niemożliwymi do utrzymania, „śmierdzącymi” testami. To jedna z najlepszych inwestycji, jakie poczyniłem w tym roku!