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





Проверьте OCUnit. В сети разработчиков Apple есть отличное введение.
Xcode включает XCTest, который похож на OCUnit, платформу модульного тестирования Objective-C, и имеет полную поддержку запуска модульных тестов на основе XCTest как части процесса сборки вашего проекта. Поддержка модульного тестирования Xcode описана в Обзор Xcode: использование модульных тестов.
Вернувшись в Xcode 2 дня, я написал серию сообщений в блоге о том, как выполнять некоторые общие задачи с модульным тестированием Xcode:
Несмотря на использование OCUnit, а не XCTest, концепции во многом совпадают.
Наконец, я также написал несколько сообщений о том, как писать тесты для пользовательских интерфейсов Какао; способ структурирования Какао делает его относительно простым, потому что в большинстве случаев вам не нужно запускать цикл событий или что-то подобное.
Это позволяет проводить разработку на основе тестов не только для кода уровня модели, но также для кода уровня контроллера и даже кода уровня представления.
Питер Хози также сделал хорошую презентацию по модульному тестированию какао на встрече Cocoaheads в Лейк-Форест, Калифорния, в декабре. Вот видео об этом: vimeo.com/2725498
Когда я начал заниматься iOS около года назад, я обнаружил, что OCUnit имеет (для меня) серьезный недостаток - я не мог запустить его на симуляторе или устройстве. Возможно, с тех пор все изменилось - я не проверял, но я использую GHUnit просто по этой причине.
Есть ли какие-нибудь официальные видео от разработчиков Apple по этой теме? Я прошел через WWDC 2011 и 2010, но не нашел ничего ... странно, ведь тестирование важно, да?
Ссылка на Руководство по модульному тестированию Xcode перемещена на Руководство по модульному тестированию Xcode
Xcode 5 теперь имеет XCTest, он все еще включает OCUnit? Вы обновите свой ответ информацией для XCode 5.
Если у вас достаточно репутации, вы сможете обновить ее. Xcode 5 продолжал включать OCUnit, мы удалили его либо в Xcode 6, либо в Xcode 7. Однако у нас есть конвертер, и концепции, лежащие в основе фреймворков, остаются прежними, и, по крайней мере, некоторые из моих сообщений в блоге (которые были написаны в Xcode 2 и 3 дня) остаются.
Я начал использовать испытательную установку Google Toolbox для iPhone, и она мне очень понравилась.
Сен: те (создатель среды тестирования, включенной в Xcode) объясняет, как использовать OCUnit с проектом iPhone: простой-iphone-ipad-unit-test.
Посмотрите GHUnit Габриэля Хэндфорда:
"The goals of GHUnit are:
Runs unit tests within XCode, allowing you to fully utilize the XCode Debugger. A simple GUI to help you visualize your tests. Show stack traces. Be installable as a framework (for Cocoa apps) with a simple (or not) target setup; or easy to package into your iPhone project."
+1 для GHUnit! Я новичок в разработке iPhone и могу честно сказать, что GHUnit у меня был запущен и работал без суеты (инструкции идеальны) по сравнению с абсолютным кошмаром OCUnit и легкой мигренью GTM. GHUnit выигрывает за удобство и простоту использования!
Обратите внимание, что этот ответ и сопровождающие его комментарии были написаны некоторое время назад. Xcode теперь имеет гораздо лучшую поддержку тестов на основе OCUnit, что упрощает настройку тестов и их запуск в отладчике.
Этот проект больше не поддерживается.
Обратите внимание, что проект Google Toolbox для Mac (GTM) просто расширяет / дополняет структуру Apple SenTestingKit (которая, в свою очередь, основана на OCUnit). Как пишут на сайте проекта:
GTM has several enhancement to the standard SenTestingKit allowing you to do UI unit testing, automated binding unit testing, log tracking, and unit testing on the iPhone, as well as tools for doing static and dynamic testing of your code.
Обратите внимание на следующий комментарий о тестировании пользовательского интерфейса:
GTM has extensive support for user interface unit tests. It supports testing both the imaging and/or internal state of almost all of the standard Cocoa/UIKit UI objects, and makes it easy for you to extend this support to your own UI objects.
См. Их страницу "Проверка кода и модульное тестирование" для получения инструкций по его использованию.
Я бы также рекомендовал использовать инструменты покрытия, чтобы увидеть, какая часть кода покрыта модульными тестами, а какая нет. Базовое покрытие кода линии и ответвления может быть создано с помощью инструмента GCOV. Если вы хотите создавать хорошие отчеты о покрытии HTML, есть LCOV и ZCOV, которые делают именно это.
Я рекомендую gh-unit, у него приятный графический интерфейс для результатов тестирования.
Я пришел к выводу, что GHUnit - это самый продвинутый фреймворк для тестирования Objective-C. Я сделал округлять тестовых фреймворков в своем блоге. Он является наиболее гибким с точки зрения развертывания (iphone, симулятор или собственный Mac OS) и возможностей утверждения. Поскольку он основан на GTM, он наследует все преимущества GTM по сравнению с SenTestingKit, но также добавляет намного больше. Еще один бонус в том, что он очень активно поддерживается.
Я предпринял попытку интегрировать OCMock в GHUnit, он отлично работает !. Вы можете получить код на github.
Мэтт Галлахер из Cocoa with Love имеет очень хорошая статья по модульному тестированию.
Я использую SimpleUnitTest, работает с библиотеками iPhone и iPad.
http://cbess.blogspot.com/2010/05/simple-iphone-ipad-unit-test.html
Он поставляется с шаблоном модульного теста Xcode, чтобы легко добавить класс модульного теста. Обертывает GTM.
Вы можете буквально перетащить его в активный проект и начать добавлять модульные тесты в течение 3 минут (или меньше).
Э ... он должен выйти из строя, как только вы его запустите?
Поддержка модульного тестирования в составе xcode (для его простой настройки) в сочетании с окраннер (для некоторой добродетели автотеста / Growl) в настоящее время является моей любимой установкой для модульного тестирования Obj-C.
Я понимаю, что это старый вопрос, но если вы предпочитаете тестирование в стиле BDD (rspec, Jasmine и т. д.) Над тестированием в стиле xUnit (Test :: Unit, JSUnit, JUnit и т. д.), Тогда вы можете рассмотреть возможность проверки Кедр . Cedar привносит тестирование в стиле BDD в Objective-C, теперь, когда язык поддерживает замыкания.
Мы с удовольствием используем Cedar для наших проектов iOS на Pivotal Labs, и мы активно работаем над его улучшением. Любые отзывы и предложения приветствуются по адресу [email protected].
вот их много
Я бы посоветовал изучить Kiwi, платформу тестирования BDD с открытым исходным кодом для iOS: киви
Ознакомьтесь с WIKI проекта, чтобы начать, или получите книгу Даниэля Стейнберга «Тестирование разработки iOS с помощью Kiwi» Тест-драйв-iOS-разработка
Kiwi также поддерживает OS X, см. github.com/allending/Kiwi/wiki/Up-and-Running-with-Kiwi-for- Mac
Я надеюсь, что вы сможете использовать SenTestKit, с помощью которого вы сможете протестировать каждый метод.
Specta - это современный фреймворк TDD (Test Driven Development) / BDD (Behavior Driven Development), который работает поверх XCTest. Он поддерживает модульное тестирование для проектов iOS и Mac OS X.
Насколько мне известно, некоторые ответы здесь устарели. У Apple теперь есть XCTest, который поможет вам решить эту проблему. Я думаю, что нужно обновить большинство ответов.