При первом запуске симулятора iOS 12 тесты не пройдены - PullRequest
0 голосов
/ 19 сентября 2018

В настоящее время у меня действительно странная проблема с симуляторами iOS 12 в отношении тестирования, и я не знаю, как подходить к ее решению.

Я постараюсь объяснить здесь, но я не совсем понимаю, что происходит, так что простите, если это не имеет большого смысла!

У меня есть рабочее пространство Xcode, содержащее несколько отдельных проектов, каждый из которых содержит некоторые функциональные тесты.

Это рабочее пространство также подключено к Bitrise для запуска тестов при каждом открытии запроса на слияние.

Все работало нормально, пока я не обновил все проекты и цели до Swift 4.2.Само обновление прошло без проблем, только с одним небольшим изменением в делегате приложения наряду с настройками в файле проекта, поэтому я почти уверен, что ничто в миграции не вызвало проблему.

Ранее все тесты запускалисьи пройти нормально на локальных симуляторах и на Bitrise.

Теперь после этой миграции 2 теста не пройдены на Bitrise, и каждый раз одни и те же два.

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

Если я тестирую новый симулятор iOS 11.4 в первый раз, все тесты проходят успешно.

Если я тестирую на новом симуляторе iOS 12 в первый раз, два теста не пройдены.

Если затем я закрываю симулятор iOS 12 и снова тестирую его, один из двух тестов завершается неудачей.

Тот факт, что он, похоже, связан с совершенно новыми запусками симулятора, объясняет, почему Bitrise дает сбой, так как я думаю, что он работает в свежей средесо свежими симуляторами для каждой сборки (хотя, может быть, мне в какой-то момент повезет, и я буду работать на машине, на которой уже установлен симулятор iOS 12, и поэтому все будет работать нормально?!).

Сами тесты связаны с мониторингом региона.У меня есть фиктивный менеджер местоположений, который добавляет регионы в массив при отправке запроса на мониторинг региона и удаляет его при отправке запроса на прекращение мониторинга.

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

Утверждения для добавления двух областей проходят.

Утвержденияпосле каждого сбоя удаления.

Я проверяю, что созданный мною объект среднего уровня правильно запрашивает эти события мониторинга запуска / остановки, а не сам CLLocationManager.

Надеюсь, это приведет к некоторыммного смысла, и извините, если это немного бессвязно;Я просто пытаюсь включить всю необходимую информацию!

...