Jsem nečetl celé vlákno, ale jednotkové testy jsem viděl na projektu v bance a je nutné si ujasnit, o co jde. Jednotkový test je myšleno otestování metod třídy izolovaně od ostatních tříd, tedy zahrnuje intenzivní mockování.
Když píšu nějakou metodu, tak si zároveň k ní udělám jednotkový test. Pokud dělám velký projekt, který bude v budoucnu velice složitý, udělám ten jendotkový test zpravidla vždy, i pro jednoduchou metodu. Zároveň to udělat muséím, protože se na takovém projektu měří test coverage. Zároveň si jednotkový test napíšu i v menším projektu ze svobodné vůle, protože mi šetří čas pro teď a i pro budoucnost: otestuju si tam, že metoda, kterou jsem právě napsal, nebo nějaká posloupnost metod, dělá to, co chci, aby dělala - tzn. místo abych otrocky pouštěl aplikaci, přihlašoval se do ní a zkoušel nově napsanou ufnkcionalitu, testuju si to tím unit testem a zároveń vyvíjím - je to značně rychlejší. Konrétní příklad: používám v metodě nějakou knihovnu a nejsem si jistý, jak funguje - např. knihovna pro parsování vstupních parametrů z konzole - udělám si proto k tomu unit test, ve kterém si ověřím, jak se vlastně ta knihovna chová.
Když někdo tvrdí, že Unit testy nejsou potřeba, když je silný typový systém, tak si myslím, že dotyčný dělá zřejmě v nějakém Pythonu nebo Javascriptu. Já dělám v javě, která silný typový systém má, a přesto se unit testy dělají, protože jejich primární goal je zafixovat chování kódu proti překlepům (někdo prostě napíš nechtěně něco do kódu, nevšimne si toho a pak to commitne, no a produkní incient e na světě), proti nevhodným změnám (někdo v kódu neotestuje na null něco, co null být může, a unit test to může podchytit), ba či přímo proti zásadním změnám funkce kódu. Unit testem taky můžu upozornit kolegy na to, že metoda, nebo její část, se opravdu musí chovat tak, jak je to v kódu - z různých důvodů.