Как запускать и отлаживать модульные тесты для приложения iPhone

ПРИМЕЧАНИЕ: Модульное тестирование сейчас намного проще настроить. Для создания «логических» тестов я следовал рекомендациям Apple по созданию логических тестов . Это работает нормально, если вы понимаете, что логические тесты запускаются во время сборки.

Чтобы иметь возможность отлаживать эти тесты, необходимо создать специальный исполняемый файл, который будет вызывать эти тесты. Статья Шона Мичели в блоге Grokking Cocoa предоставляет всю необходимую информацию. Однако следование этому не привело к немедленному успеху и потребовало некоторой настройки.

Я перейду к основным этапам, представленным в учебном пособии Шона, с некоторыми схемами «для чайников», которые мне потребовалось некоторое время, чтобы выяснить:

  1. Установите цель, которая содержит модульные тесты, но НЕ запускает их
  2. Настройте исполняемый файл otest для запуска тестов
  3. Настройте переменные среды otest, чтобы otest мог найти ваши модульные тесты

Следующее было выполнено с XCode 3.2. 5

Примечание для XCode 4

В XCode 4 можно ПРЯМО отлаживать модульные тесты. Просто напишите свой тест, добавьте его в свою цель как один из тестов и установите в нем точку останова. Вот и все. Будет еще больше.

Шаг 1 - Настройка цели

  1. Дублируйте цель модульных тестов, расположенную под вашим проектом Targets. Это также создаст дубликат вашего продукта модульных тестов (файл .octest). На рисунке ниже исходной целью является «LogicTest».
  2. Переименуйте как цель модульных тестов, так и продукт модульных тестов (файл .octest) с тем же именем. На рисунке ниже "LogicTestsDebug" является дублирующейся целью.
  3. Удалить фазу RunScript для новой цели

Оба имени могут быть любыми, но я бы избегал пробелов.

enter image description here

Шаг 2 - Настройка otest

] Наиболее важным моментом здесь является получение правильного теста, т.е. е. для вашей текущей iOS, а не для версии Mac по умолчанию. Это хорошо описано в учебнике Шона. Вот еще несколько деталей, которые помогли мне исправить ситуацию:

  1. Перейти в Project-> New Custom Executable. Откроется окно с предложением ввести имя исполняемого файла и путь к исполняемому файлу.
  2. Введите любое название для имени.
  3. Скопируйте и вставьте путь к тестируемому исполняемому файлу iOS. В моем случае это был /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.2.sdk/Developer/usr/bin/otest
  4. Нажмите Enter. Это приведет вас к странице конфигурации вашего исполняемого файла.
  5. Единственное, что нужно изменить на этом этапе, - это выбрать «Тип пути: относительно текущего SDK». Не вводите путь, это было сделано на шаге 3. Это хорошо описано в учебнике Шона. Вот еще несколько деталей, которые помогли мне исправить ситуацию:
    1. Перейти в Project-> New Custom Executable. Откроется окно с предложением ввести имя исполняемого файла и путь к исполняемому файлу.
    2. Введите любое название для имени.
    3. Скопируйте и вставьте путь к тестируемому исполняемому файлу iOS. В моем случае это был /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.2.sdk/Developer/usr/bin/otest
    4. Нажмите Enter. Это приведет вас к странице конфигурации вашего исполняемого файла.
    5. Единственное, что нужно изменить на этом этапе, - это выбрать «Тип пути: относительно текущего SDK». Не вводите путь, это было сделано на шаге 3. Это хорошо описано в учебнике Шона. Вот еще несколько деталей, которые помогли мне исправить ситуацию:
      1. Перейти в Project-> New Custom Executable. Откроется окно с предложением ввести имя исполняемого файла и путь к исполняемому файлу.
      2. Введите любое название для имени.
      3. Скопируйте и вставьте путь к тестируемому исполняемому файлу iOS. В моем случае это был /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.2.sdk/Developer/usr/bin/otest
      4. Нажмите Enter. Это приведет вас к странице конфигурации вашего исполняемого файла.
      5. Единственное, что нужно изменить на этом этапе, - это выбрать «Тип пути: относительно текущего SDK». Не вводите путь, это было сделано на шаге 3. Новый пользовательский исполняемый файл. Откроется окно с предложением ввести имя исполняемого файла и путь к исполняемому файлу.
      6. Введите любое название для имени.
      7. Скопируйте и вставьте путь к тестируемому исполняемому файлу iOS. В моем случае это был /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.2.sdk/Developer/usr/bin/otest
      8. Нажмите Enter. Это приведет вас к странице конфигурации вашего исполняемого файла.
      9. Единственное, что нужно изменить на этом этапе, - это выбрать «Тип пути: относительно текущего SDK». Не вводите путь, это было сделано на шаге 3. Новый пользовательский исполняемый файл. Откроется окно с предложением ввести имя исполняемого файла и путь к исполняемому файлу.
      10. Введите любое название для имени.
      11. Скопируйте и вставьте путь к тестируемому исполняемому файлу iOS. В моем случае это был /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.2.sdk/Developer/usr/bin/otest
      12. Нажмите Enter. Это приведет вас к странице конфигурации вашего исполняемого файла.
      13. Единственное, что нужно изменить на этом этапе, - это выбрать «Тип пути: относительно текущего SDK». Не вводите путь, это было сделано на шаге 3. платформа / Разработчик / SDK / iPhoneSimulator4.2.sdk / Developer / usr / bin / otest
      14. Нажмите Enter. Это приведет вас к странице конфигурации вашего исполняемого файла.
      15. Единственное, что нужно изменить на этом этапе, - это выбрать «Тип пути: относительно текущего SDK». Не вводите путь, это было сделано на шаге 3. платформа / Разработчик / SDK / iPhoneSimulator4.2.sdk / Developer / usr / bin / otest
      16. Нажмите Enter. Это приведет вас к странице конфигурации вашего исполняемого файла.
      17. Единственное, что нужно изменить на этом этапе, - это выбрать «Тип пути: относительно текущего SDK». Не вводите путь, это было сделано на шаге 3. enter image description here

      Шаг 3 - Настройка аргументов otest и переменных среды

      Параметры otest легко настроить ... Но это оказалось моей самой большой проблемой. Изначально я назвал свою цель логического теста «LogicTests Debug». С этим именем и "LogicTests Debug.octest" (с кавычками) в качестве аргумента для otest я продолжал останавливать otest с кодом выхода 1 и НИКОГДА не останавливался в моем коде ...

      Решение : нет места в вашей цели name!

      Аргументы для otest:

      1. -SenTest Self (или All, или имя теста - введите man otest в терминале, чтобы получить список)
      2. {LogicTestsDebug} .octest - Где {LogicTestsDebug} должен заменить на имя вашего пакета логических тестов.

      Вот список переменных среды для копирования / вставки:

      • DYLD_ROOT_PATH: $ SDKROOT
      • DYLD_FRAMEWORK_PATH: "

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

        1. Неверный путь. Первоначально у меня было много проблем, потому что я указывал на mac otest. Я продолжал вылетать при запуске с кодом завершения 6.
        2. Ошибочные аргументы. Пока я не удалил пробел из имени пакета (.octest), у меня продолжался сбой теста с кодом выхода 1.
        3. Неверный путь в переменных среды. В учебнике Шона есть множество дополнительных вопросов, дающих некоторое представление о том, что пробовали другие люди. Набор, который у меня сейчас, кажется, работает, поэтому я предлагаю вам начать с этого.

        Вы можете получить сообщение в консоли, которое может заставить вас думать, что что-то не так с вашими переменными среды. Вы можете заметить сообщение о CFPreferences. Это сообщение не мешает правильной работе тестов, поэтому не Сосредоточьтесь на этом, если у вас есть проблемы с запуском otest.

        enter image description here

        Наконец, когда все заработает, вы сможете останавливаться на точках останова в ваших тестах.

        enter image description here

        И последнее ...

        Я читал во многих блогах что основным ограничением интегрированного XCode SenTestKit является то, что тесты нельзя запускать во время сборки приложения. Как оказалось, на самом деле этим довольно легко управлять. Вам просто нужно добавить пакет логических тестов в качестве зависимости к вашему проекту приложения. Это обеспечит сборку вашего пакета логических тестов, т. Е. Все тесты будут запущены до того, как ваше приложение будет построено.

        Для этого вы можете перетащить ваш пакет логических тестов на целевое приложение.

        enter image description here

16
задан MiKL 13 October 2014 в 08:31
поделиться