Po pierwsze ponarzekać. Terminologia w rodzajach testów to jest jakaś porażka :D Są testy jednostkowe, ale czy ktoś ma jakiś papier co to jest ta jednostka? Powszechnie uważa się że klasa (lub klasa z zależnościami), a co w językach nie mających klas? Nazwa behawioralnie
też jest śliska bo każdy kod ma zachowanie a prawie każde testy badają jakieś zachowanie (może za wyjątkiem testów wydajnościowych któe badają szybkość zachowania)
Chociaż w tym przykładzie to widzę że autor wprowadził jakieś definicje więc nie jest tak źle :P
A teraz na temat :P Ja chciałbym żeby testy były jak największe i żeby testowały jaknajbardziej realny przykład. Oczywiście wadą takiego podejścia jest to że testy takie potrafią być powolne lub mało stabilne (jak zależą od rzeczy których nie kontrolujemy). Dlatego potrzebujemy czasem mocków. Z drugiej strony test który przechodzi przez 300 klas (w Haskellu modułów), ale tylko jedna jest zamockowana to jest behawioralny czy jednostkowy?
Z drugiej strony jest czasem jakiś bardzo specyficzny (trudny) fragment. Czasem są to utilsy jak pisze @wartek01, czasem jakaś pokręcona logika biznesowa którą można przetestować niezależnie. Przykład z hobbystycznego projektu - na wejściu wpada liczba a na wyjściu ma być string-liczba w systemie siódemkowym (mam też konwersję odwrotną). No nie ma potrzeby pisać wielkiech testów stawiających całą aplikację żeby przetestować taki koder/dekoder