А как сейчас с работой?
Только при устойчивых спецификациях.
Я не знаю, что такое "устойчивые спецификации" и каково бывает, когда они неустойчивые. В конце концов, спеки всегда согласовываются с заказчиком и заказчик за это всегда платит. Так что я не вижу особых проблем :)
Хотя бы потому, что юнит-тесты не настолько вербально выразительны, как спецификация, которая пишется на обычном человеческом языке.
Ошибаешься. Хотябы только из-за того, что написанная человеком спецификация всегда оставляет открытые вопросы. Юнит-тесты всегда конкретны и проверяют что-то одно.
Поэтому, чтобы понять, что делает тестируемая функция, например, лучше написать об этом в комментарии к этой функции, а не пытаться "зашифровать" это в написанных для неё юнит-тестах.
Тесты не являются заменой комментариев. Тесты проверяют правильность работы. Описывать назначение функции нужно в комментариях, более того, тамже можно описать исключения и пограничне состояния. Тесты же должны проверить, что функция работает именно так, как задумано и что наложенные на функцию требования выполняются.
Для разового софта юниттесты просто удорожают его разработку и почти никак не помогают.
Разовый софт? Не сталкивался с таким. Всегда есть поддержка. Ну или
как минимум надо предполагать поддержку.