Иногда я сталкиваюсь с ситуацией, когда исправление ошибки требует удаления части кода. Пурист TDD (я полагаю) будет выступать за написание тестов, которые не пройдут, удалят код и затем просматривают тесты.
Теперь кажется странным иметь тест, утверждающий, что какой-то код был удален. Конечно, я полагаю, что это гарантирует, что никто не будет копаться в системе контроля версий и вернет этот код обратно, но стоит ли это того? Если оно того стоит, оно, безусловно, кажется менее ценным, чем написание теста для добавленного кода , верно?
unit-testing
tdd
bug
jhewlett
источник
источник
Ответы:
Вы смотрите на это неправильно. Тест не утверждает, что код был удален. Тест делает утверждает , определенную функциональность.
Тест не заботится о количестве кода, необходимого для его прохождения, и не осознает, что вы удалили какой-то код. Ценность такого теста такая же, как и у любого другого теста, который вы создаете из-за ошибки: вы уверены в отсутствии ошибки при прохождении теста, и интеграция теста в процесс сборки гарантирует, что ошибка будет скорее всего, не будет повторно введен.
Еще один способ взглянуть на это с точки зрения TDD заключается в следующем: когда вы знаете, что удаление кода исправляет ошибку, а затем задаетесь вопросом, писать ли тест, вы уже сделали TDD неправильно. После того, как вы начнете работать над ошибкой, вы должны сначала написать тест, который гарантирует наличие ошибки при ее сбое. Только после этого вы исправляете фактическую ошибку - которая может потребовать удаления кода или нет - и делаете тестовый проход. Вопрос, который вы задаете, даже не возникает таким образом.
источник