Каков наилучший способ модульного тестирования кода Objective-C? - PullRequest
329 голосов
/ 28 августа 2008

Какие рамки существуют для модульного тестирования кода Objective-C? Я хотел бы рамки, которая хорошо интегрируется с Apple Xcode.

Ответы [ 17 ]

317 голосов
/ 28 августа 2008

Xcode включает в себя XCTest, который аналогичен OCUnit , инфраструктуре модульного тестирования Objective-C, и полностью поддерживает запуск модульных тестов на основе XCTest в рамках процесса сборки вашего проекта. Поддержка модульного тестирования XCode описана в Обзор XCode: Использование модульных тестов .

В Xcode 2 дня назад я написал серию постов в блоге о том, как выполнять некоторые общие задачи с модульным тестированием Xcode:

Несмотря на использование OCUnit, а не XCTest, концепции в основном одинаковы.

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

Это позволяет выполнять разработку через тестирование не только для кода уровня модели, но также для кода уровня контроллера и даже кода уровня представления.

50 голосов
/ 25 февраля 2009

Выезд GHUnit от Габриэля Хэндфорда:

"Цели GHUnit:

Запускает модульные тесты в XCode, позволяя вы в полной мере использовать XCode Debugger. Простой графический интерфейс, чтобы помочь вам визуализируйте свои тесты. Показать стек следы. Быть устанавливаемым в качестве основы (для приложений Какао) с простым (или нет) настройка цели; или легко упаковать в ваш проект iPhone. "

18 голосов
/ 19 ноября 2008

Я начал использовать тестовую установку Google для iPhone, и она отлично работает для меня.

Google-инструментов-для-макинтош

13 голосов
/ 28 августа 2008

Выезд OCUnit . В сети разработчиков Apple замечательное введение .

12 голосов
/ 02 марта 2009

Обратите внимание, что проект Google Toolbox for Mac (GTM) просто расширяет / дополняет инфраструктуру Apple SenTestingKit (которая сама основана на OCUnit). Как говорится на сайте проекта:

GTM имеет несколько улучшений стандартный SenTestingKit, позволяющий тестирование пользовательского интерфейса, автоматическое связывание модульное тестирование, отслеживание журнала и юнит тестирование на iPhone, а также инструменты для выполнения статических и динамических тестирование вашего кода.

Обратите внимание на следующий комментарий о тестировании пользовательского интерфейса:

GTM имеет обширную поддержку для пользователей интерфейсные юнит-тесты. Поддерживает тестирование изображений и / или внутреннее состояние почти всех стандартные объекты пользовательского интерфейса Какао / UIKit, и облегчает вам продление этого поддержка ваших собственных объектов пользовательского интерфейса.

См. На странице " Проверка кода и модульное тестирование " инструкции по его использованию.

12 голосов
/ 24 октября 2009

Я пришел к выводу, что GHUnit является самой продвинутой средой тестирования Objective-C. Я сделал обзор тестовых фреймворков в своем блоге. Он является наиболее гибким с точки зрения развертывания (iphone, simulator или mac os native) и возможностей утверждения. Поскольку он основан на GTM, он наследует все преимущества GTM по сравнению с SenTestingKit, но также добавляет намного больше. Еще один бонус в том, что он поддерживается очень активно.

Я приложил усилия для интеграции OCMock в GHUnit, он прекрасно работает !. Вы можете получить код на github .

12 голосов
/ 23 ноября 2010

Я понимаю, что это старый вопрос, но если вы предпочитаете тестирование в стиле BDD (rspec, Jasmine и т. Д.), А не тестирование в стиле xUnit (Test :: Unit, JSUnit, JUnit и т. Д.), Вы можете рассмотреть проверка кедр . Cedar переносит тестирование в стиле BDD в Objective-C, теперь, когда язык поддерживает замыкания.

Мы с радостью используем Cedar для наших проектов iOS на Pivotal Labs , и мы активно работаем над его улучшением. Любые отзывы и предложения приветствуются по адресу cedar-discuss@googlegroups.com

10 голосов
/ 15 марта 2009

Я также рекомендовал бы использовать инструменты покрытия, чтобы увидеть, какая часть кода покрыта модульными тестами, а какая нет. Базовое покрытие кода линии и ветви может быть сгенерировано с помощью инструмента GCOV . Если вы хотите создать хорошие отчеты о покрытии HTML, есть LCOV и ZCOV , которые делают именно это.

7 голосов
/ 26 апреля 2011
7 голосов
/ 10 августа 2010

Поддержка Unit Testing, входящая в состав xcode (для его простой настройки) в сочетании с ocrunner (для некоторого качества автотеста / роста), в настоящее время является моей любимой настройкой Obj-C Unit Testing.

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