Не удается запустить UIAutomationTest из командной строки

У меня есть приложение iOS, и я хочу включить его в непрерывную интеграцию. Стратегия, которую я использую для этого, заключается в попытке запустить тесты из командной строки.

Я пытаюсь сделать это, используя следующий скрипт:

TRACETEMPLATE="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Instruments/PlugIns/AutomationInstrument.bundle/Contents/Resources/Automation.tracetemplate" instruments -t $TRACETEMPLATE build/Release-iphonesimulator/MyApp.app -e UIACSCRIPT "UnitTests/SomeTest.js" 

SomeTest.js – это простой файл javascript, который я могу запустить в Instrumentation внутри Xcode, и он работает. Я создаю свое приложение, используя:

 xcodebuild -alltargets -sdk iphonesimulator5.1 

и это генерирует MyApp.app. Я могу запустить приложение из Xcode в симуляторе очень хорошо, однако, когда я пытаюсь запустить инструменты, я получаю коробку с сообщением о том, что есть неизвестная ошибка, а в командной строке она печатает:

 2012-05-15 15:32:59.928 instruments[17548:1d03] Recording cancelled : At least one target failed to launch; aborting run Instruments Trace Error : Failed to start trace. 

Может ли кто-нибудь дать мне какую-либо помощь / предложения о том, что может произойти, и как я могу это исправить?

Кроме того, он всегда открывает iPad-симулятор? Могу ли я сделать так, чтобы он открыл любой симулятор, который я хочу?

6 Solutions collect form web for “Не удается запустить UIAutomationTest из командной строки”

Я получал такую ​​же ошибку и чуть не вытащил свои волосы, пытаясь ее решить. Сообщения об ошибках абсолютно бесполезны.

То, что оказалось для меня проблемой, было файлом .app, на который я указывал. Как только я нашел «правильный» файл .app, который был глубоко похоронен в папке 5.1 Simulator, я смог наконец запустить тесты UIAutomation из командной строки с Xcode 4.3.

Путь к .app, который работал для меня:

 ~/Library/Application\ Support/iPhone\ Simulator/5.1/Applications/{string-of-numbers-and-letters}/MyApp.app/ 

Вот полная команда, которую я использую для запуска тестов UIAutomation из командной строки с Xcode 4.3:

 instruments -t /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Instruments/PlugIns/AutomationInstrument.bundle/Contents/Resources/Automation.tracetemplate ~/Library/Application\ Support/iPhone\ Simulator/5.1/Applications/{string-of-numbers-and-letters}/MyApp.app/ -e UIASCRIPT /Path/To/TestFile.js 

Надеюсь, это поможет кому-то другому, поскольку документации для этого крайне не хватает.

Обновить

Обратите внимание, что с Xcode 4.5.2 расположение шаблона автоматизации изменилось с местоположения моего исходного ответа:

 /Applications/Xcode.app/Contents/Applications/Instruments.app/Contents/PlugIns/AutomationInstrument.bundle/Contents/Resources/Automation.tracetemplate 

Правильное расположение /Applications/Xcode.app/Contents/Applications/Instruments.app/Contents/PlugIns/AutomationInstrument.bundle/Contents/Resources/Automation.tracetemplate Automation.tracetemplate, /Applications/Xcode.app/Contents/Applications/Instruments.app/Contents/PlugIns/AutomationInstrument.bundle/Contents/Resources/Automation.tracetemplate Xcode 4.5.2, – это /Applications/Xcode.app/Contents/Applications/Instruments.app/Contents/PlugIns/AutomationInstrument.bundle/Contents/Resources/Automation.tracetemplate

Пути для вызова командной строки UIAutomation несколько изменились за последние пару лет. Я написал несколько сценариев оболочки bash, которые работают вместе, что может запустить тестовый файл UIAutomation таким образом, который работает с Xcode 4.4.1.

См. Эту статью: https://gist.github.com/3605692#comments

Вкратце, ключевая команда заканчивается:

instruments -t $INSTRUMENTS_TEMPLATE $APP_PATH -e UIASCRIPT $SCRIPT_PATH -e UIARESULTSPATH $RESULTS_PATH

В моих сценариях требуются переменные замены. Другое преимущество заключается в том, что приложения симулятора iOS часто меняют GUID как часть их пути. Мой скрипт найдет их, поэтому вам не придется жестко кодировать временный идентификатор GUID в своих вызовах builds / scripts / command line.

прости я плохо знаю английский. Как самый простой способ запустить этот скрипт из Teamtsity? Каждая сборка – цифры и буквы разные. Не самый простой способ:

  1. очистить тренажер до сборки
  2. найти папку с программой и содержать эти цифры и буквы, записанные в переменной.
  3. Эта переменная, например, запись сценария.

Может быть, из этих чисел можно легче взять?

Конфигурация сборки должна быть отлаживаемой, чем Release. Это и стало причиной ошибки в моем случае. Вы можете изменить конфигурацию сборки в «Редактирование схем» и выбрав вкладку «Профиль». Убедитесь, что вкладка build также находится в режиме отладки.

Я сделал команду ps чтобы посмотреть, какие процессы запущены. Я обнаружил, что инструменты все еще работают. Затем я убил killall instruments и убил инструменты. Затем я сделал команду инструментов и после этого работал отлично.

  • Как ввести текст в текстовое поле в веб-представлении, используя UIAutomation
  • Существует ли существующая библиотека для автоматизации управления пользовательским интерфейсом в IOS
  • Обход профиля разработки для использования инструментов на телефоне с джейлбрейком
  • При записи с использованием UIAutomation на устройстве он зависает на «Start Capture ...». Прекрасно работает на Simulator
  • Если «Идентификатор специальных возможностей» предназначен для тестов автоматизации UI, почему он включен в локализованные ресурсы?
  • Использование памяти журнала Xcode Automated UI
  • Как проверить скриншоты в React Native?
  • Как получить доступ к изображениям в UIATablecell
  • Распределение XCODE
  • Функция Xcode INSTRUMENTS для проверки пропускной способности / сбоя кажется сломанной в Xcode 4.6
  • Приложение «Автоматизация настроек», iPhone
  • Interesting Posts

    Операция не может быть завершена. (Ошибка какао 512.) Coredata Iphone. Файлы не могут быть скопированы в папку документов

    График рисования с большим количеством точек на iOS

    NSObject не поддерживает encodeWithCoder?

    Направить уведомление, увиденное при создании приложения

    Центр уведомлений – уведомление не появляется в центре уведомлений, когда они были получены в активном приложении

    AVCaptureSession начинается, а затем сразу же

    страница глубины Преобразование по UIView, Swift

    Пользовательский интерфейс блокируется при нажатии контроллера просмотра на контроллер навигации

    Получение номера строки линии, в которой находится каретка в uitextview

    Как назначить действие для объекта UIImageView в Swift

    Google SignIn для iOS не удается построить, потому что ищет файл, который не существует

    Продолжительность AVPlayer – NAN с Twilio

    Objective-C проверить тип блока?

    Multi-Sampling / Jagged Edges in Metal (iOS)

    Как изменить размер шрифта и размер шрифта OHAttributedLabel в iOS?

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.