Статьи

Приложения для iOS от Calabash

Автоматическое приемочное тестирование является стандартной и распространенной практикой при разработке веб-приложений. Одна из самых популярных сред — это  Cucumber,  и ее легко интегрировать в приложения Ruby on Rails и Java. Тем не менее, в настоящее время так же легко использовать эти платформы с собственными мобильными приложениями. В этой статье мы рассмотрим простое приложение, написанное на Swift, и покажем, как можно использовать такую ​​среду, как  Calabash,  и начать писать автоматизированные приемочные тесты.

Прежде чем продолжить, это предварительные условия, необходимые для запуска программного обеспечения, описанного в этой статье:

  • Xcode 6.1
  • Гит
  • Рубин
  • Rubygems

Сделать списки

Приложение, к которому мы добавим приемочные тесты, представляет собой простой список дел. Исходный код можно найти  здесь . Я разветвил существующее  приложение  и внес несколько небольших изменений.

1 Извлеките репозиторий, вы должны по умолчанию находиться в  начальной  ветке.

$ git clone https://github.com/codingricky/todoSwift

2 Откройте файл  SingleTodo.xcodeproj  в Xcode. Скомпилируйте и запустите это.

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

Нажав кнопку  Добавить,  вы добавите задачу. Нажатие  Готово  удалит все отмеченные задачи.

Теперь, когда у нас есть работающее приложение, давайте добавим несколько тестов.

Кальян

Calabash — одна из многих платформ для приемочного тестирования iOS. Это тот, который я нашел наиболее простым в использовании. Учитывая мой опыт работы с Rails и Cucumber, переход прошел гладко, поскольку Cucumber поддерживается в среде Calabash. Одним из недостатков Calabash является то, что для его сборки требуется отдельная версия приложения, поскольку он встраивает в приложение HTTP-сервер. Это позволяет волшебству автоматизации случиться.

3 Калебас распространяется как драгоценный камень. Выполните следующую команду в терминале.

$ gem install calabash-cucumber --no-ri --no-rdoc

4 Установите фреймворк Calabash в проект Xcode, выполнив следующую команду в каталоге, в котором вы клонировали репозиторий git.

$ calabash-ios setup

Это добавит еще одну схему под названием  SingleTodo-cal  в проект Xcode. Он также добавится в каталог calabash.framework.

$ ls -al
total 32  
drwxr-xr-x  10 ricky  staff   340 30 Oct 11:31 .  
drwxr-xr-x   4 ricky  staff   136 30 Oct 11:25 ..  
drwxr-xr-x  13 ricky  staff   442 30 Oct 11:32 .git  
-rw-r--r--   1 ricky  staff   289 30 Oct 11:25 .gitignore
-rw-r--r--   1 ricky  staff    57 30 Oct 11:25 .travis.yml
-rw-r--r--   1 ricky  staff  1478 30 Oct 11:25 README.md
drwxr-xr-x  12 ricky  staff   408 30 Oct 11:25 SingleTodo  
drwxr-xr-x   5 ricky  staff   170 30 Oct 11:25 SingleTodo.xcodeproj  
-rwxr-xr-x   1 ricky  staff    92 30 Oct 11:25 build.sh
drwxr-xr-x   6 ricky  staff   204 24 Oct 13:10 calabash.framework 

5 Создайте образец файла объектов. Запустите следующую команду:

$ calabash-ios gen

Это сгенерирует следующие файлы.

$ ls features/
my_first.feature    step_definitions    support  

6 Создайте  схему SingleTodo-cal  в Xcode. Запустите пробный тест.

$ cucumber

Это выполнит функцию против симулятора. Фактический симулятор появится. Вывод в терминале должен выглядеть следующим образом:

Feature: Running a test  
  As an iOS developer
  I want to have a sample feature file
  So I can begin testing quickly

  Scenario: Example steps                            # features/my_first.feature:6
    Given I am on the Welcome Screen                 # features/step_definitions/my_first_steps.rb:1
    Then I swipe left                                # calabash-cucumber-0.11.3/features/step_definitions/calabash_steps.rb:234
    And I wait until I don't see "Please swipe left" # calabash-cucumber-0.11.3/features/step_definitions/calabash_steps.rb:165
    And take picture                                 # calabash-cucumber-0.11.3/features/step_definitions/calabash_steps.rb:229

1 scenario (1 passed)  
4 steps (4 passed)  
0m31.562s  

Актуальный тест

Хорошо иметь пример теста, но давайте напишем тест, который немного больше подходит для приложения.

Для простоты мы будем использовать  предопределенные шаги  в Cucumber / Calabash. Тест добавит задачу и подтвердит, что она была добавлена.

7 Создайте новый файл объектов и удалите образец.

$ touch features/todo.feature
$ rm features/my_first.feature

8 Отредактируйте новый файл ( features / todo.feature ) в предпочитаемом вами редакторе. Вставьте следующее в файл.

Feature: Todo list application can add tasks  
  As a user
  I want to add tasks
  So I can remember to do things

Scenario: Add Task  
  Given I am on the Welcome Screen
  When I touch "Add"
  And I fill in "TaskDescription" with "listening to Taylor Swift"
  And I touch "Add task"
  Then I wait for "listening to Taylor Swift" to appear

Тест довольно понятен. Есть пара вещей, на которые стоит обратить внимание. Во-первых,   шаги «Когда я касаюсь» используют метку кнопки. «Заливка в»  шаг использует метку доступности. Так как мы изучаем Swift, мы могли бы также послушать немного Swift.

9 Запустите огурец еще раз, сценарий должен выполнить.

$ cucumber

Вывод должен выглядеть следующим образом:

Feature: Todo list application can add tasks  
  As a user
  I want to add tasks
  So I can remember to do things

  Scenario: Add Task                                                 # features/todo.feature:6
    Given I am on the Welcome Screen                                 # features/step_definitions/my_first_steps.rb:1
    When I touch "Add"                                               # calabash-cucumber-0.11.3/features/step_definitions/calabash_steps.rb:15
    And I fill in "TaskDescription" with "listening to Taylor Swift" # calabash-cucumber-0.11.3/features/step_definitions/calabash_steps.rb:114
    And I touch "Add task"                                           # calabash-cucumber-0.11.3/features/step_definitions/calabash_steps.rb:15
    Then I wait for "listening to Taylor Swift" to appear            # calabash-cucumber-0.11.3/features/step_definitions/calabash_steps.rb:174

1 scenario (1 passed)  
5 steps (5 passed)  
0m34.296s  

Резюме

Итак, теперь вы видели, как легко начать работу с приложениями Calabash и iOS. Используя этот подход, вы можете легко создать набор тестов и убедиться, что качество вашего приложения остается высоким.

В следующих статьях я буду опираться на этот пример, так что следите!

Рекомендации