Я строю новое приложение и стараюсь придерживаться «тестового» развития так же верно, как могу. Я нахожусь в ситуациях, когда мне нужно реализовать/изменить функцию, которая имеет эффект аннулирования ряда существующих модульных тестов. Как мне с этим бороться? Как я вижу, есть 3 варианта:Что делать, если новая функция приводит к тому, что существующие модульные тесты становятся недействительными?
Update или удалить все существующие тесты для удовлетворения новых требований к полнометражных (добавляя больше по мере необходимости), а затем реализовать функцию
Реализовать особенность первых, запускать тесты, чтобы увидеть неудачи, обновление или удаление любых неудачных тестов (добавление больше по мере необходимости)
Добавить новые тесты для новой функции, реализовать функцию, запустить все тесты увидеть старый на эс неудача, удалить или обновления старых тестов по мере необходимости
Первый вариант придерживается TDD, но может быть мучительно контрпродуктивным. Второй вариант - самый простой, но вы не будете точно тестировать сначала и, возможно, не будете должным образом «покрыты». Третий вариант - это компромисс между ними и привлекательный до определенной степени, но вы рискуете повторно написать тест, когда сможете просто обновить старый.
Я не чувствую, что у меня есть четкая стратегия. Что вы делаете в этих ситуациях?
Это то, что я делаю, когда думаю обо всем коде, который я тестировал, который, в конце концов, попал в мусорную корзину: http://www.youtube.com/watch?v=tgBI3-q5COM – Will
Звучит странно, что одно изменение (правильно) может сломать несколько модульных тестов. Может быть, один или два, но несколько? Возможно ли, что ваши тесты устройств слишком много перекрываются? – Beta
@Beta. Скажем, вы добавляете требование о том, что для реализации теперь требуется дополнительный зависимый класс. Теперь ваши другие тесты не обеспечивают ложную реализацию зависимого объекта, поэтому при запуске вы получаете кучу нулевых опорных исключений. Затем вам нужно будет вернуться и исправить свой настроенный код, чтобы потом они прошли. – tvanfosson