Jeśli mam już test integracyjny dla mojego programu i wszystkie zdały pomyślnie, to mam wrażenie, że zadziała. Jakie są zatem powody, aby pisać / dodawać testy jednostkowe? Ponieważ i tak muszę już pisać testy integracyjne, chciałbym napisać tylko test jednostkowy dla części, które nie są objęte testami integracyjnymi.
To, co znam, to przewaga testu jednostkowego nad testem integracyjnym
- Mały, a zatem szybki do uruchomienia (ale dodanie nowej jednostki w celu przetestowania czegoś jest już testowane przez test integracyjny, oznacza to, że mój komplet testowy staje się większy i dłuższy do uruchomienia)
- Łatwiej zlokalizuj błąd, ponieważ testuje tylko jedną rzecz (ale mogę rozpocząć test jednostkowy, aby zweryfikować każdą poszczególną część, gdy mój test integracji nie powiódł się)
- Znajdź błąd, który może nie zostać wykryty w teście integracji. np. błędy maskowania / kompensacji. (ale jeśli moje testy integracyjne przebiegną pomyślnie, co oznacza, że mój program będzie działał, nawet istnieje jakiś ukryty błąd. Więc znajdź / napraw te błędy nie mają tak naprawdę wysokiego priorytetu, chyba że zaczną przerywać przyszłe testy integracyjne lub powodować problemy z wydajnością)
I zawsze chcemy pisać mniej kodu, ale testy jednostkowe zapisu wymagają dużo więcej kodu (głównie próbnych obiektów konfiguracji). Różnica między niektórymi moimi testami jednostkowymi a testami integracyjnymi polega na tym, że w testach jednostkowych używam próbnego obiektu, aw testach integracyjnych używam rzeczywistego obiektu. Które mają dużo duplikacji i nie podoba mi się powielony kod, nawet w testach, ponieważ to dodaje narzut, aby zmienić zachowanie kodu (narzędzie refaktoryzacyjne nie może cały czas działać).