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