XP.Party (iOS) - unit tests frameworks overview

1,027 views
921 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,027
On SlideShare
0
From Embeds
0
Number of Embeds
187
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

XP.Party (iOS) - unit tests frameworks overview

  1. 1. Test Frameworks overviewИнженерные практики в iOS: Unit Tests
  2. 2. О нас● Виталий Ружников ○ iOS-фрилансер ○ Руководитель разработки мобильных проектов● Антон Катков ○ Тренер по инженерным практикам ○ Директор, руководитель проектов, iOS- разработчик
  3. 3. Roadmap● Unit Tests● OCUnit● Google Toolbox for Mac (GTM)● GHUnit● Рекоммендации
  4. 4. Unit Test● Проверка компонента, что он ведет себя так, как ожидает этого программист;● Компонентом может быть функция или класс.
  5. 5. Unit Test● Не обращается к базе данных● Не лезет в сеть● Не обращается к файловой системе● Для их выполнения приходится специально настраивать среду, например, править конфигурационные файлы.● Выполняются быстро(очень очень быстро, тест, выполняющийся 1/10 сек, медленный тест)
  6. 6. Интеграционные● Все остальное
  7. 7. Критерии● Легкость подключения, написания и запуска тестов;● Сообщения об ошибках в тестах;● Возможность отладки;● Интеграция с IDE(XCode 4.x, XCode 3.x, AppCode);● Запуск тестов из коммандой строки(для регулярного прогона на сервере непрерывной интеграции);
  8. 8. OCUnit - Подключение● Из коробки (галочку поставить при создании проекта);● Либо добавить unit test target к существующему проекту;
  9. 9. OCUnit - Пишем тесты● Наследуемся от SenTestCase● -(void)testMyTestNameGoesHere{}● STAssertEquals● STAssertEqualsWithAccuracy● STAssertEqualObjects● STAssertThrows
  10. 10. OCUnit - Запуск, товарищи!● Logic tests запускаются только на симуляторе ○ XCode 4 - Схема Test для запуска ○ XCode 3 - выбрать таргет тестов ○ Можно редактировать какие тесты запускать, отредактировав схему● Application tests - и на девайсе и на симуляторе ○ Использовать Run scheme для запуска ○ Прогоняются все тесты
  11. 11. Демо
  12. 12. OCUnit - Сообщение об ошибках● Номера строчек в коде и сообщения об ошибке● Есть возможность генерации JUnit- подобных отчетов: ○ https://github. com/hborders/BPOCUnitXMLReporter
  13. 13. OCUnit - Отладка● XCode 4 - Добавляем брейкпойнт и вперед● XCode 3 - Излазить гугл и пройти нетривиальную инструкцию
  14. 14. OCUnit - Поддержка в IDE● Свалившиеся тесты представлены в issue навигаторе.● Application Tests - только сообщения в консоли.
  15. 15. OCUnit - Запуск из команднойстроки● Используем команду xcodebuild ○ xcodebuild -target UnitTests -configuration Debug -sdk iphonesimulator5.0 clean build
  16. 16. GTM Подключение● Проходим инструкцию http://code.google. com/p/google-toolbox-for-mac/wiki/iPhoneUnitTesting● Тесты по существу запускаются из коммандной строки● Нет искусственного разграничения на logic и application тесты
  17. 17. GTM - Пишем тесты● Наследуемся от GTMTestCase● -(void)testMyTestNameGoesHere {}● Assertations совместимы с теми, что в OCUnit!● STAssertEqualStrings
  18. 18. GTM - Запуск● И на девайсе и на симуляторе● Нельзя выборочный запуск тестов делать
  19. 19. GTM - Сообщения об ошибках● Практически такое же как в OCUnit;● Нет информации о возможности генерации JUnit подобных отчетов;
  20. 20. GTM - Debugging● Включаем галочку Run script only when installing ○ Если не включить, то запуск тестов будет проводиться на этапе компиляции● Ставим брейкпойнт и запускаем тестовый таргет
  21. 21. GTM - XCode Integration● На этапе компиляции ошибки видны в issue навигаторе и редакторе кода● При пригоне после установки на симуляторе ищем сообщения об ошибках в консоли
  22. 22. GTM - Запуск из командной строки● Ничем не отличается от OCUnit, но не забываем снять галочку с "Run script only when installing"
  23. 23. GHUnit - Плюшки● Асинхронные тест кейсы● Ассерты с картинками вьюшек● Выбор отдельных тестов● Мокирование NSUrlConnection
  24. 24. GHUnit - Подлючение● Проходим по шагам инструкцию http://gabriel.github.com/gh- unit/docs/appledoc_include/guide_install_ios_4.html● Нужен отдельный таргет● Тесты запускаются в отдельном приложении
  25. 25. GHUnit - Пишем тесты● Наследуемся от GHTestCase● -(void)testMyTestNameGoesHere { }● Assertations практически теже самые, только префикс GH(GHAssertTrue...).
  26. 26. GHUnit - Запуск● Запуск на девайсе и в симуляторе(после некоторых махинаций)● Тесты запускаются внутри отдельного ios приложения● Можно выбирать какие тесты запускать● Приложение может упасть, если будет unexpected exception
  27. 27. GHUnit - Отчеты об ошибках● Стек трейсы, номера строк, текстовое описание ошибки● Отчеты об ошибках могут быть представлены в junit формате ○ WRITE_JUNIT_XML=YES
  28. 28. GHUnit - Отладка● Добавляем брейкпойнт● Собираем и запускаем тестовое приложение
  29. 29. GHUnit - Ide Integration● Отсутствует
  30. 30. GHUnit - Command Line● Проходим инструкцию http://gabriel.github. com/gh-unit/docs/appledoc_include/guide_command_line.html● Для тех кому лень: ○ xcodebuild -target Tests -configuration Debug -sdk iphonesimulator5.0 clean build GHUNIT_CLI=1 WRITE_JUNIT_XML=1
  31. 31. Best Practices● Отдельный таргет на юнит тесты;● Отдельный таргет на интеграционные тесты;● Отдельный на медленные;● Отдельный на performance...
  32. 32. Final Recommendations● Unit Tests XCode 4 - OCUnit● Unit Tests XCode 3 - GTM● GHUnit - для интеграционных тестов
  33. 33. Контакты● Виталий Ружников ○ varuzhnikov@gmail.com ○ Twitter: @ruzhnikov ○ Skype: viruzh● Антон Катков ○ katkov.anton@gmail.com ○ Twitter: @Vanger_cat ○ Skype: anton.katkov

×