Автоматизация Xcode 'Debug> Команда Simulate Location

Есть ли программный способ управления командой xcode > simulate location? У меня есть сценарии проверки внешнего местоположения, которые я хотел бы запустить, и в идеале набор тестов может привести к тому, что xcode по желанию изменит местоположение подключенного телефона.

Возможно ли это, и если да, то как?

Ответ 1

Существует проект GitHub под названием Pokemon-Go-Controller, который делает именно то, что вы хотите.

Обзор решения:

  • Создайте файл gpx
  • Создайте пустой проект, ссылающийся (не копируя) этот gpx файл и запустив его на вашем устройстве.
  • Запустите автоматический кликер, который будет постоянно нажимать update location в Xcode
  • Обновите файл gpx с помощью некоторого script, и местоположение устройства будет автоматически обновлено.

Вместо автоматического кликера вы можете использовать этот Apple Script:

#Will continue update the location to the location name below from Xcode:

property locationName : "pokemonLocation" #name of your gpx filex

###########################
tell application "System Events"
    tell process "Xcode"
        repeat while true
            click menu item locationName of menu 1 of menu item "Simulate Location" of menu 1 of menu bar item "Debug" of menu bar 1
            delay 0.2
        end repeat
    end tell
end tell

Ответ 2

Не уверен, что это именно то, что вам нужно, но у вас могут быть разные пакеты unit test, которые используют разные местоположения (или файлы GPX), настроив его на схеме.

Затем вы можете провести модульные тесты в каждом комплекте, которые проверяют, что вам нужно в этом конкретном месте.

Схема

xctool также может просто запускать модульные тесты в определенной цели с помощью опции -only:

path/to/xctool.sh \
  -workspace YourWorkspace.xcworkspace \
  -scheme YourScheme \
  test -only SomeTestTarget

Ответ 3

Да, это возможно. 1. Настройте GPX файлы, как описано в ответе @InsertWittyName, или как описано в этом сообщении в блоге. 2. Используйте инструменты для запуска приложения в симуляторе с использованием разных файлов GPX.

Я бы выписал весь процесс, но кто-то более красноречивый, чем я уже.

Являясь заядлым пользователем S/O, я был бы лишен возможности оставить то, что является в основном одноканальным ответом. Итак, вот дополнительная информация о бонусах.

Надеюсь, я по крайней мере предоставил достаточную информацию, чтобы квалифицировать как более ленивый ответ только для ссылок. Наслаждайтесь и удачи!

Ответ 4

idevicelocation - это инструмент командной строки, чтобы имитировать геолокацию в устройствах ios.

Использование:
$ idevicelocation [OPTIONS] LATITUDE LONGITUDE

Установите местоположение, передающее два аргумента, широту и долготу:

$ idevicelocation 48.856614 2.3522219000000177

Передача отрицательных значений:

$ idevicelocation 77.432332 -- -7.008373564

Симуляция остановки остановки:

$ idevicelocation --stop

Параметры:

-d enable connection debug messages.<br/> -u specify device UDID.<br/> -h help.<br/> -s stop location simulation on device.

Он использует библиотеку libimobiledevice для связи с процессом com.apple.dt.simulatelocation, который также используется Xcode для этой цели.
Инструкции по сборке находятся в файле README.
Убедитесь, что вы создали правильный образ разработчика перед тем, как идти в случайные места.
Спасибо Angulo за то, что вы написали эту потрясающую утилиту.

Этот инструмент в настоящее время не поставляется с пакетом libimobiledevice, хотя существует Pull Request, ожидающий долгого времени.