Расположение схемы Xcode по умолчанию игнорируется в тестах

Я создал файл GPX и добавил его в свой проект. Если у меня запущен проект, я могу выбрать файл GPX из раскрывающегося списка возможных местоположений для имитации и правильно применить определенный путь.

Проект содержит 2 схемы: Основная схема и Схема MainTest. Я настроил оба для использования файла GPX в качестве «местоположения по умолчанию» на вкладке «Параметры». Кроме того, в области «Тест» обеих схем я снова указал один и тот же файл.

Параметры запуска основной схемы Параметры запуска основной схемы

Настройка теста основной схемы Тест основной схемы

Параметры запуска тестовой схемы Параметры запуска тестовой схемы

Схема тестирования Настройка теста Схема тестирования Настройка теста

Когда я запускаю приложение на симуляторе, оно правильно применяет смоделированное местоположение. Однако, когда я запускаю свои тесты, смоделированное местоположение не применяется. Я затрудняюсь объяснить, почему тесты не применяют местоположение автоматически. После того, как тесты скомпилированы и установлены на симуляторе/тестовом устройстве, я могу применить желаемое смоделированное местоположение с помощью раскрывающегося списка в Xcode. Однако для настройки автоматических тестов схема должна правильно применить целевое смоделированное местоположение, поскольку нет возможности установить смоделированное местоположение из тестовых сценариев. Есть ли что-то еще, что мне не хватает?


person Jan K    schedule 07.11.2016    source источник
comment
Вы когда-нибудь решали это? У меня такая же проблема: stackoverflow.com/questions/49437177/   -  person Verticon    schedule 22.03.2018
comment
к сожалению нет   -  person Jan K    schedule 24.03.2018
comment
Создают ли тесты свежую, никогда не запускаемую сборку? Тот, который должен запрашивать разрешение пользователя перед доступом к службам определения местоположения? Отсутствие разрешения может быть причиной того, что смоделированное местоположение недоступно.   -  person SteveCaine    schedule 21.09.2018


Ответы (1)


Это немного устарело, но, поскольку были относительно недавние запросы на то же самое, я собрал пример с использованием Xcode 10. Я понятия не имею, были ли другие проблемы, когда этот вопрос был написан, но вот как это работает сегодня.

Для тестов вам необходимо указать файл GPX для использования в настройках теста схемы. Вот пример из тестового проекта, который я собрал вместе:

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

Кроме того, убедитесь, что схема помечена как «общий доступ», чтобы настройки были зарегистрированы в вашем исходном репозитории и проверены другими пользователями или вашим конвейером CI.

В тестовый проект, который я собрал, я включил файл GPX для Space Needle и один для Статуи Свободы. Мои настройки запуска не указывают файл или местоположение GPX, мои модульные тесты используют/ожидают Space Needle, а мои тесты пользовательского интерфейса используют/ожидают Статую Свободы. Все работало, как и ожидалось. Конечно, вы можете использовать один файл GPX для всех трех целей.

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

Я разместил полный проект, демонстрирующий работу файлов GPX как с XCTests, так и с XCUITests на GitHub.

person clarus    schedule 26.03.2019