Если писать правильно, то такой проблемы не будет. Сначала пишется тест-программа (не обязательно юнит-тестирование), потом "сломанная" целевая программа, потом сломанная программа "исправляется". Причем, для каждого компонента, функции программы отдельное тестирование.
А писать более-менее серьезный функционал писать в надежде, что он заработает, а потом думать, где ты накосячил - ну это ребячество.