KogromВторичное использование - это правда. Применение тестов позволяет еще раз взглянуть на дизайн системы под новым углом.
Я понимаю так, что юнит-тесты и код, который они тестируют сильно взаимосвязаны, так как:
1. Юнит-тесты дают примеры использования кода. То есть получается своеобразная живая документация. Поэтому пользователю-программисту они очень пригодятся. Без них код будет беднее.
2. Юнит-тесты формируют из кода некий недофрейворк (библиотеку, пакет - называйте как хотите). Как они это делают? Проверяют классы на вторичное использование. И это хорошо. Посмотрите на библиотечные функции и классы Python-а - они избыточны для конкретного программиста, но никто особо не страдает. Поэтому не вижу ничего плохого в том, что юнит-тест диктует коду каким ему быть.
Тем не менее я не считаю, что вводить малопонятные крючки, требующиеся только лишь для выполнения тестового кода - хорошая практика.
Если же тесты помогают перепроектировать систему так, чтобы она была не столь монолитна и получила (практически бесплатно) большую гибкость - двумя руками
“за”!
С подходом к тестам как “живой документации” не всё так просто. Изучение чужих библиотек мне подсказывает, что хорошее тестовое покрытие слабо совмещается с ясными и понятными тестами, легко читаемыми сторонним разработчиком.
Для проверки я посмотрел тестовые пакеты для Питона и twisted (с их тестами довольно хорошо знаком) и Пирамиды (новой поделки, имеющей замечательное тестовое покрытие).
По их тестам нельзя изучать систему. Нужно читать исходники и документацию.
Если “что-то пошло не так” - ответ скорее найдется в исходниках, чем в тестах.
Другое дело - работа над изменением библиотеки. Здесь тесты на своём, законном месте. Они замечательно “дают по рукам” и помогают выявить глубокие взаимосвязи, как правило не интересные внешнему разработчику.
Про избыточность библиотечных классов и функций Питона - откровенно говоря, не понял. Как по мне - наоборот. Стандартная библиотека успешно скрывает особенности реализации, давая пользователю простой и понятный интерфейс. Ляпы случаются - но тенденция всё же прослеживается.