Если честно, я бы, наверное, этого не сделал. Модульные тесты изолированы, и вы фактически не будете знать, есть ли у вас «нежелательные, неясные побочные эффекты», потому что все защищено от других вещей, которые вызывают побочные эффекты. В результате вам требуется интеграция или системное тестирование, и , который - это не то, что вы можете автоматизировать.
Создайте несколько комплексных системных тестов высокого уровня, которые придадут вам определенную степень уверенности, а затем используйте тестирование покрытия, чтобы выяснить, что вы упустили Труднее указать на их точную причину, но с другой стороны, у вас будет гораздо больше шансов увидеть ошибки.
Как только вы найдете ошибки, напишите модульные тесты только для них. По мере продвижения вперед вы можете использовать TDD для битов, которые вы хотите реорганизовать.
Я знаю, что это, вероятно, не тот ответ, который вы хотите услышать, но я тестировал много, много лет, и это надежный подход (хотя я бы вряд ли назвал его единственным подходом:)