Do refaktorování uživatel vůbec nemá co mluvit, neboť funkcionalita se nemění.
To sice nemá, ale bez testů to do produkce nepustím... Opravdu si nelajznu, že tam bude nějaká chyba, jsme jen lidé.
Pokud máš uvnitř nějaký algoritmus zabalený v nějaké třídě a tento algoritmus máš dobře zdokumentovaný a víš, pro jaké vstupy má vracet jaké výstupy, tak ten jednotkový test dává smysl a pomůže udržet kvalitu (kvalitu z pohledu zákazníka). Tedy za předpokladu, že máš napojení té třídy na zbytek systému správně a neuděláš chybu někde jinde, např. nepřehodíš znaménko nebo neposuneš řád nebo neprohodíš atributy někde výš.
Pokud ale ty třídy tak dobře zdokumentované nemáš a/nebo se obáváš, že uděláš chybu i někde jinde, tak potřebuješ integrační/systémové testy, které ověří funkci systému jako celku a budou k němu přistupovat co nejpodobnějším způsobem, jako to bude dělat uživatel v produkci. Tyhle testy ti dají mnohem větší jistotu, že to funguje správně, než ty jednotkové.
Ideálně použiješ kombinaci obou – pomocí komplexních testů ověříš základní scénáře a to, že jsou jednotlivé komponenty správně propojené. A pomocí jednotlivých ověříš všechny možné případy jednotlivých u jednotlivých tříd.
Výhodou jednotkových testů je to, že jsou rychlé, nemusíš překompilovat a nasadit celou aplikaci, můžeš si je pouštět pořád dokola a ladit algoritmus/třídu. Ale rozhodně nejsou samospásné – bez těch integračních/systémových testů se neobejdeš.