Мне кажется, что принятый ответ был одним из самых слабых ( Недостатки разработки, управляемой тестами? ), и самый модный ответ пахнет кем-то, кто может писать над определенными тестами.
Большие инвестиции времени: для простых
если вы потеряете около 20% от фактического
реализация, но для сложных
случаев вы теряете гораздо больше.
TDD - это инвестиция. Я обнаружил, что, как только я полностью погрузился в TDD, потерянное время очень мало, а потерянное время было больше, чем восполненное, когда дело дошло до обслуживания.
Для сложных случаев ваши тесты
сложнее рассчитать, я бы посоветовал в
такие случаи, чтобы попробовать и использовать
автоматический код ссылки, который будет работать
параллельно в отладочной версии /
тестовый прогон вместо юнит-теста
простейшие случаи.
Если ваш тест становится очень сложным, возможно, пришло время пересмотреть ваш дизайн. TDD должен вести вас по пути меньших, менее сложных блоков кода, работающих вместе
Иногда ваш дизайн не ясен с самого начала и развивается по мере продвижения вперед - это заставит вас повторить тест, что приведет к большим потерям времени. Я бы посоветовал отложить модульные тесты в этом случае, пока вы не разберетесь в дизайне.
Это худший из них! TDD действительно должен быть «Test Driven Design ». TDD - это дизайн, а не тестирование. Чтобы в полной мере осознать все преимущества TDD, у вас есть игрушка drive вашего дизайна из ваших тестов. Таким образом, вы должны переделать свой производственный код, чтобы ваши тесты прошли, а не наоборот, как предполагает этот пункт
Сейчас самое модное на данный момент: Недостатки тестовой разработки?
Когда вы достигаете точки, где у вас есть большое количество тестов, для изменения системы может потребоваться переписать некоторые или все ваши тесты, в зависимости от того, какие из них были признаны недействительными в результате изменений. Это может превратить относительно быструю модификацию в очень трудоемкую.
Как и в первом пункте принятых ответов, это похоже на чрезмерную спецификацию в тестах и общее отсутствие понимания процесса TDD. При внесении изменений начните с теста. Измените тест на то, что должен делать новый код, и внесите изменения. Если это изменение нарушает другие тесты, то ваши тесты делают то, что они должны делать, и терпят неудачу. Модульные тесты, для меня, предназначены для того, чтобы проваливаться, и поэтому стадия RED является первой, и ее никогда нельзя пропускать.