Здравствуйте, Sinix, Вы писали:
C>>Вот прекрасно всё работает, в условиях ещё более жёстких. S>Так мы не про сами тесты, а про "TDD, которая именно юнит тестирование(и как следствие DI) ставит во главу угла".
Пофиг. Юнит-тесты писать проще всего. И по наблюдениям, если юнит-тестов мало, то интеграционных тестов нет вообще.
S>Излишний радикализм с отдельными тестами на каждую мелочь на практике поднимает стоимость сопровождения раза в два из-за колоссального объёма кода, который приходится править при изменении бизнес-правил у очередного заказчика (что скорее обыденность, чем что-то исключительное).
Так это говнокод, однако. Если изменение одного заказчика ломает 100500 тестов, то код или тесты написаны плохо. Думайте как переделать.
C>>А если система ещё и сложная, с внешними зависимостями, то вообще вариантов никаких нет. Только TDD с mock'ами поведения внешних сервисов. S>Не-не-не, для сложных систем тру-TDD не работает. Получается ИБД в чистом виде. Везде красота и благолепие, тесты зеленеют, одни внедренцы без валерьянки к клиентам не ездят.
Тесты значительно СНИЖАЮТ стоимость разработки как раз из-за этого. Программист после небольшого изменения не ждёт конца интеграционных тестов, а сразу запускает локальные юнит-тесты с mock'ами. Конечно, они не идеальны, но находят процентов так 95 рутинных ошибок времени разработки.
Вторые 95% догоняются на этапе интеграционного тестирования.