Методы модульного тестирования с I / O в iOS - PullRequest
3 голосов
/ 09 ноября 2011

Каковы наилучшие подходы к методам модульного тестирования, которые включают операции ввода-вывода в iOS?

Например, я рассматриваю возможность использования Objective-C категорий для переопределения поведения методов ввода-вывода, таких как imageNamed . Однако это предотвращает модульное тестирование черного ящика, поскольку необходимо знать, какие методы ввода / вывода используются в реализации.

Ответы [ 2 ]

1 голос
/ 09 ноября 2011

Замена реализаций методов в сторонних средах - чрезвычайно рискованная вещь, потому что нет способа быть уверенным во внутренних деталях реализации и, следовательно, в зависимостях, которые вы можете неосознанно нарушать. Он также очень хрупкий - даже если он работает правильно сегодня, он может что-то сломать в будущем выпуске фреймворка.

Никакое количество модульных тестов не может гарантировать действительность изменений, которые вы вносите таким образом. Если бы вы делали подобные вещи исключительно для экспериментов, я уверен, что это может быть забавно и полезно в учебных целях, но тогда вы не будете беспокоиться о тестировании черного ящика.

Подумайте, можете ли вы выполнить то, что вам нужно, добавив методы, которые параллельны существующим, вместо замены реализаций метода в фреймворке.

1 голос
/ 09 ноября 2011

Либо передайте результаты операции ввода / вывода, чтобы тестовые данные могли быть предоставлены вместо фактических данных ввода / вывода, либо используйте OCMock . Я использовал OCMock именно для этой цели. Если вы рассматриваете OCMock , прочитайте хотя бы заголовочный файл для всех доступных методов.

Если вы работаете с устаревшим кодом, подумайте о чтении / изучении книги Эффективная работа с устаревшим кодом от Michael Feathers

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...