Как unit test расширение приложения на Xcode 6
Кто-нибудь знает, как выполнить модульное тестирование целевой цели приложения, особенно цель расширения клавиатуры?
Что я пробовал (в unit test target):
- В разделе "Общий" коснитесь целевого объекта цели расширения вместо приложения-контейнера.
- Установите "Bundle Loader" на путь двоичного файла цели расширения, который выглядит как
$(BUILT_PRODUCTS_DIR)/com.mycompany.keyboard.appex/com.mycompany.keyboard
- Установите "тестовый узел" на
$(BUNDLE_LOADER)
.
- В диалоговом окне "Сборка фаз" установите "Зависимости целей" как для приложения-контейнера, так и для расширения.
После того, как все это будет сделано, я смогу построить его успешно, но всегда получаю "Test Failed" с журналом Test target SogouInputTests encountered an error (Test session exited(1). without checking in. If you believe this error represents a bug, please attach the log file at /tmp/TestStatus-UXfvxw.log)
.
Я использую Xcode 6 beta 3.
Ответы
Ответ 1
Я сообщил об ошибке Apple. И, к сожалению, ответ заключается в том, что расширение клавиатуры теперь не поддерживает unit test. Ответ исходит от Apple:
- В настоящее время он не поддерживается для запуска модульных тестов внутри расширения приложения.
- Вместо этого укажите код, который вы хотите протестировать, в фреймворк и проверьте код там
- Связать структуру с расширением
Ответ 2
Просто столкнулся с подобными проблемами, пытаясь unit test расширение. Независимо сделал то же самое, что автор попытался с помощью Bundle Loader, указав на путь .appx без успеха.
Мне действительно не понравилась идея создания отдельной структуры только для тестирования, поэтому я оказался в добавлении тестируемого источника в цель тестирования расширения. Это очень просто, если у вас не слишком много исходных файлов в вашем расширении:
- Выберите цель тестирования расширения в настройках проекта
- Переход к фазам сборки
- Развернуть источники компиляции
- Нажмите +
- Добавьте исходные файлы с вашим тестируемым кодом.
- Сборка для тестирования
Почему это работает:
После того, как вы добавите источники расширения в цель тестирования расширения, XCode собирается удвоить ссылку на каждую из них и скомпилировать как в обычной сборке расширения, так и в тестовой сборке, тем самым устраняя проблемы с привязкой.
Есть ли недостатки?
Вам придется вручную синхронизировать список исходных файлов в целевой тестовой программе расширения. Всякий раз, когда вы добавляете/удаляете файлы в целевой точке расширения, вам может потребоваться сделать то же самое в своей тестовой цели.