Я пришел к такому подходу - на новые сущности пишу модульное тестирование + главный тест на общую управляющую логику, который начинается с взаимодействия первых классов и к концу разработки превращается в main.
Профит простой - я в main просто копирую код из этого главного теста, с минимумом корректировок.
Но сейчас мне знакомый рекламирует tdd. Читаю про него, смотрю примеры и пока что-то не просветлился.