Автоматизация 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, ожидающий долгого времени.