Вероятно, мы несколько иначе смотрим на юниттесты.
Для меня это выглядит примерно так:
- есть код, который хорошо читается сторонним человеком
- и есть юниттесты для этого кода (модуля или класса - в любом случае они хорошо локализованы).
“Внешний” программист использует парадигму “черного ящика”. Он питает надежду, что там “все работает” и не желает вникать в детали.
Есть public api, не выходи за его рамки - и все будет хорошо.
“Внутренний” программист (или наш “внешний” герой, столкнувшийся со странным) знает об этом ящике всё.
Он видит его как “белый”, пишет хакерские тесты (лишь бы они обеспечивали покрытие близкое к идеальному), правит код реализации.
Потом опять пишет тесты. Сознавая грань между “внутренним” и “внешним”. Тесты могут вторгаться в детали реализации.
mock тестирование появилось в ответ на сложности традиционного подхода к созданию юниттестов.
Позвольте привести статью того же Мартина Фаулера:
http://martinfowler.com/articles/mocksArentStubs.html“Хаки” и переход на “белый ящик” позволяют писать тесты удобней, понятней и проще.
Конечно, в любом деле нужно знать меру. Подмена в тесте рабочего кода на заглушку, всегда возвращающую “все отлично” - нехорошо.
Kogrom, спасибо вам за оппозицию. Отвечая на них я смог четче сформулировать мою точку зрения.
Она складывалась не за один день, и я уже успел немного позабыть то первое впечатление от столкновения с подобным подходом:
- эти люди так хачат в своих тестах!
- заявляют, что у них test driven development!
- и после этого кто-то запрещает мне ковыряться в носу!