Как лучше всего тестировать код Objective-C?

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

Насколько мне известно, некоторые ответы здесь устарели. У Apple теперь есть XCTest, который поможет вам решить эту проблему. Я думаю, что нужно обновить большинство ответов.

Honey 12.07.2016 22:15
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
331
1
73 432
17
Перейти к ответу Данный вопрос помечен как решенный

Ответы 17

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

Ответ принят как подходящий

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

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

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

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

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

Питер Хози также сделал хорошую презентацию по модульному тестированию какао на встрече Cocoaheads в Лейк-Форест, Калифорния, в декабре. Вот видео об этом: vimeo.com/2725498

Grant Limberg 02.03.2009 22:06

Когда я начал заниматься iOS около года назад, я обнаружил, что OCUnit имеет (для меня) серьезный недостаток - я не мог запустить его на симуляторе или устройстве. Возможно, с тех пор все изменилось - я не проверял, но я использую GHUnit просто по этой причине.

drekka 12.04.2011 06:11

Есть ли какие-нибудь официальные видео от разработчиков Apple по этой теме? Я прошел через WWDC 2011 и 2010, но не нашел ничего ... странно, ведь тестирование важно, да?

Robert 25.04.2012 01:37

Ссылка на Руководство по модульному тестированию Xcode перемещена на Руководство по модульному тестированию Xcode

Steven Green 14.08.2012 18:18

Xcode 5 теперь имеет XCTest, он все еще включает OCUnit? Вы обновите свой ответ информацией для XCode 5.

BrightIntelDusk 25.03.2014 02:48

Если у вас достаточно репутации, вы сможете обновить ее. Xcode 5 продолжал включать OCUnit, мы удалили его либо в Xcode 6, либо в Xcode 7. Однако у нас есть конвертер, и концепции, лежащие в основе фреймворков, остаются прежними, и, по крайней мере, некоторые из моих сообщений в блоге (которые были написаны в Xcode 2 и 3 дня) остаются.

Chris Hanson 15.07.2016 10:32

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

google-toolbox-for-mac

Сен: те (создатель среды тестирования, включенной в 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 выигрывает за удобство и простоту использования!

Tim Reddy 07.07.2010 07:55

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

Kristopher Johnson 06.05.2013 17:02

Этот проект больше не поддерживается.

BigHeadCreations 04.04.2018 06:09

Обратите внимание, что проект 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, у него приятный графический интерфейс для результатов тестирования.

http://github.com/gabriel/gh-unit/tree/master

Я пришел к выводу, что 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 минут (или меньше).

Э ... он должен выйти из строя, как только вы его запустите?

quantumpotato 30.09.2011 05:56

Поддержка модульного тестирования в составе 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

dbainbridge 15.03.2014 19:51

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

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

Другие вопросы по теме