SP
У тебя должны быть приемочные тесты. Хочешь ты того или нет - но без приемочных тестов будь у тебя хоть 100% покрытие юнитами это не особо показатель "внешнего качества" (которое для пользователей, о том что у них все фичи все еще на месте).
Если у нас есть скажем фича "обновить профиль" или "обновить локейшен" мы в любом случае будем писать как минимум на позитивные кейсы тесты для этих фич просто что бы знать что фичи еще с нами, живые и ими можно пользоваться.
И да такие тесты будут ходить в базу, могут выполняться ажно секунду на тест кейс, и главное что их обычно не очень много. Ну то есть их столько же сколько и фич у тебя в приложении по сути.
Дальше интересно то, что если у тебя нет
if
-ов там в логике, то в целом один проход этого приемочного теста закроет тебе весь код и необходимости в юнитах не будет.А вот есть у нас появляются
if
-ы причем не один и не два, и там логика какая сложная или сложные преобразования данных требования к которым тебе было бы хорошо бы закрыть тестами, то тут уже на сцену выходят юниты. И очень выгодно эту логику выделять куда-то (в VO, в какие-то отдельные сервисы-функции без зависимостей) дабы минимизировать необходимость подменять зависимости в тестах.В итоге код можно перераспределять чутка - логика там где зависимостей мало, там где зависимостей уже много - можно логику делигировать зависимостям - мол если нет
if
-ов то нет ограничений сколько зависимостей у тебя будет - один позитивный тест кейс все закроет.Еще один типичный косяк - это количество "зависимостей" по стэйту системы. Мол когда условно что бы потестить мелкую фичу надо там и юзеров создать, и там организации всякие и группы юзеров и друзей друзей и вот по цепочке пол приложения приходится засэтапить. Там да, там "тесты медленно" но намного хуже что достаточно быстро станет непонятно какие прекондишены нужны...