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