Каков наилучший способ для кода unit test Objective-C?

Какие существуют рамки для unit test Objective-C кода? Мне нужна инфраструктура, которая прекрасно сочетается с Xcode.

Ответ 1

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

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

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

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

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

Ответ 2

Отъезд GHUnit от Gabriel Handford:

"Цели GHUnit:

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

Ответ 3

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

google-toolbox-for-mac

Ответ 5

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

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

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

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

Подробнее о том, как его использовать, см. в разделе " Проверка кода и модульное тестирование".

Ответ 6

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

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

Ответ 7

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

Мы с радостью используем Cedar для наших проектов iOS в Pivotal Labs, и мы активно работаем над его улучшением. Любые отзывы или предложения приветствуются на [email protected]

Ответ 8

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

Ответ 9

Sen: te (создатель инфраструктуры тестирования, включенный в Xcode) объясняет, как использовать OCUnit с проектом iPhone: простой iphone-ipad-unit -test.

Ответ 14

Я бы предложил посмотреть в Kiwi, среду тестирования BDD с открытым исходным кодом для iOS: Kiwi

Посмотрите проект WIKI, чтобы начать или получить книгу Дэниела Стейнберга "Тест-драйв iOS Development с киви" test-driving-ios-development

Ответ 15

Я использую SimpleUnitTest работает с iPhone и iPad.

http://cbess.blogspot.com/2010/05/simple-iphone-ipad-unit-test.html

Он поставляется с шаблоном unit test Xcode, чтобы легко добавить класс unit test. Обертывает GTM.

Вы можете буквально отбросить его в активный проект и начать добавлять модульные тесты в течение 3 минут (или меньше).

Ответ 16

Specta - это современная инфраструктура TDD (Test Driven Development)/BDD (Behavior Driven Development), которая работает поверх XCTest. Он поддерживает модульное тестирование для проектов iOS и Mac OS X.

Ответ 17

Я надеюсь, что вы можете использовать "SenTestKit", из которого можно протестировать каждый метод.