Каковы лучшие технологии, которые можно использовать для разработки с учетом поведения на iPhone? И каковы некоторые примеры проектов с открытым исходным кодом, которые демонстрируют рациональное использование этих технологий? Вот несколько вариантов, которые я нашел:
Тестирование устройств
Test:: Unit Стиль
- OCUnit/SenTestingKit, как описано в Руководство по развитию iOS: Unit Тестирование приложений и другие Ссылки OCUnit.
- Примеры: iPhoneUnitTests, Three20
- CATCH
- GHUnit
- Google Toolbox для Mac: тестирование модулей iPhone
RSpec Стиль
- Kiwi (который также приходит с насмешкой и ожиданиями)
- Cedar
- Jasmine с Автоматизация пользовательского интерфейса как показано в dexterous 'Спецификации iOS-Acceptance-Testing
Приемочное тестирование
Selenium Стиль
-
Автоматизация пользовательского интерфейса (работает на устройстве)
- Руководство по инструментам автоматизации пользовательского интерфейса
- Справочная документация по автоматизации UI
- Tuneup js - классная библиотека для использования с UIAutomation.
-
Захват действий пользовательского интерфейса в скриптах автоматизации
Можно использовать Cucumber (написанный на JavaScript) для управления автоматизацией пользовательского интерфейса. Это был бы отличный проект с открытым исходным кодом. Затем мы могли бы написать Gherkin для запуска тестирования автоматизации пользовательского интерфейса. Пока я просто напишу Охотнику в качестве комментариев.
UPDATE: Цуккини-каркас, похоже, сочетает автоматизацию огурцов и UI!:)
Старые записи в блогах:
Огурцы Стиль
-
Frank и iCuke (на основе Огурцы встречаются с iPhone)
- Frank Google Group имеет гораздо больше активности, чем iCuke Группа Google.
- Фрэнк работает как на устройстве, так и на симуляторе, а iCuke работает только в симуляторе.
- У Фрэнка есть более полный набор определений шагов, чем определения шага iCuke. И Фрэнк также имеет сборку определения шага по своей вики.
- Я предложил объединить iCuke и Frank (подобно тому, как Merb и Rails слились), поскольку они имеют одну и ту же общую цель: огурец для IOS.
-
Zucchini Frameworkиспользует синтаксис Cucumber для написания тестов и использует CoffeeScript для определения шагов.
Дополнения
- OCMock для издевательский
- OCHamcrest и/или Expecta для ожиданий
Заключение
Ну, очевидно, нет правильного ответа на этот вопрос, но вот то, что я сейчас выбираю:
Для модульного тестирования я использовал OCUnit/SenTestingKit в XCode 4. Он прост и прочен. Но я предпочитаю язык BDD над TDD (Почему RSpec лучше, чем Test:: Unit?), Потому что наши слова создают наш мир. Итак, теперь я использую Kiwi with ARC и Завершение/автозаполнение кода Kiwi. Я предпочитаю Kiwi над Cedar, потому что он построен на вершине OCUnit и поставляется с макетами типа RSpec и mocks/stub. UPDATE: теперь я смотрю на OCMock, потому что в настоящее время Kiwi не поддерживает обрезание беспошлинных мостовых объектов.
Для приемочных испытаний я использую автоматизацию пользовательского интерфейса, потому что это потрясающе. Он позволяет записывать каждый тестовый пример, делая автоматические письменные тесты. Кроме того, Apple развивает его, и поэтому у него есть многообещающее будущее. Он также работает на устройстве и с приборами, что позволяет использовать другие интересные функции, например, показывать утечки памяти. К сожалению, с помощью UI Automation я не знаю, как запустить код Objective-C, но с помощью Frank и iCuke вы можете. Итак, я просто тестирую материал Objective-C с модульными тестами или создаю UIButton
только для конфигурации TEST
, которая при нажатии, будет запускать Objective-C код.
Какие решения вы используете?
Вопросы, относящиеся
- Есть ли решение BDD, которое в настоящее время хорошо работает с iOS4 и Xcode4?
- SenTestingKit (интегрирован с XCode) по сравнению с GHUnit на XCode 4 для модульного тестирования?
- Тестирование асинхронного кода на iOS с OCunit
- SenTestingKit в Xcode 4: асинхронное тестирование?
- Как работает модульное тестирование на iPhone?