Я часто нахожу, что меняю свой код, чтобы сделать его более проверяемым, я всегда задаюсь вопросом, хорошая идея это или нет. Некоторые из вещей, которые я нахожу, это:Должен ли я изменить код, чтобы сделать его более проверяемым?
- Добавление сеттеров только для того, чтобы я мог установить внутренний объект в макет.
- Добавление геттеров для внутренних карт/списков, чтобы я мог проверить, что внутреннее состояние объекта изменилось после выполнения какого-либо внешнего действия.
- Обертывание конкретных системных классов и создание нового интерфейса, чтобы я мог их издеваться. Например, классы файлов могут быть сложными для создания флеш-памяти, поэтому я создам новый интерфейс FileInterface и WrappedFile, который расширяет его, а затем использует FileInterface вместо File.
Это суммирует это отлично. Что касается номера 2, одна из самых сложных вещей для меня, начиная с TDD, заключалась в том, чтобы убедиться, что мне не нужно проверять частную/внутреннюю логику - только общедоступные вещи, которые остальная часть приложения будет потреблять. Как только вы преодолеете это препятствие, оно имеет смысл и освобождает. Инъекционная инъекция является существенным сдвигом конструкции, чтобы выполнить это с насмешкой. – Jay
Согласен с первым абзацем, но не со вторым. Создание отдельных интерфейсов вверх, чтобы «сделать ваш код более гибким для регулярного использования позже», просто переработано. По моему опыту, предполагаемая дополнительная гибкость никогда не используется. Код должен быть разработан для использования в первую очередь и для повторного использования второго. –