В настоящее время у меня действительно странная проблема с симуляторами iOS 12 в отношении тестирования, и я не знаю, как подходить к ее решению.
Я постараюсь объяснить здесь, но я не совсем понимаю, что происходит, так что простите, если это не имеет большого смысла!
У меня есть рабочее пространство Xcode, содержащее несколько отдельных проектов, каждый из которых содержит некоторые функциональные тесты.
Это рабочее пространство также подключено к Bitrise для запуска тестов при каждом открытии запроса на слияние.
Все работало нормально, пока я не обновил все проекты и цели до Swift 4.2.Само обновление прошло без проблем, только с одним небольшим изменением в делегате приложения наряду с настройками в файле проекта, поэтому я почти уверен, что ничто в миграции не вызвало проблему.
Ранее все тесты запускалисьи пройти нормально на локальных симуляторах и на Bitrise.
Теперь после этой миграции 2 теста не пройдены на Bitrise, и каждый раз одни и те же два.
После небольшой игры, мне удалосьвыполнить локальную репликацию и обнаружил, что эти тесты не пройдут локально, если они будут выполняться только при первом запуске симулятора iOS 12.
Если я тестирую новый симулятор iOS 11.4 в первый раз, все тесты проходят успешно.
Если я тестирую на новом симуляторе iOS 12 в первый раз, два теста не пройдены.
Если затем я закрываю симулятор iOS 12 и снова тестирую его, один из двух тестов завершается неудачей.
Тот факт, что он, похоже, связан с совершенно новыми запусками симулятора, объясняет, почему Bitrise дает сбой, так как я думаю, что он работает в свежей средесо свежими симуляторами для каждой сборки (хотя, может быть, мне в какой-то момент повезет, и я буду работать на машине, на которой уже установлен симулятор iOS 12, и поэтому все будет работать нормально?!).
Сами тесты связаны с мониторингом региона.У меня есть фиктивный менеджер местоположений, который добавляет регионы в массив при отправке запроса на мониторинг региона и удаляет его при отправке запроса на прекращение мониторинга.
Неудачные тесты являются частью testStopScanningRemovesMonitoredRegions
, поэтому я добавляю пару областей для мониторинга, а затем удаляю их одну за другой, обеспечивая уменьшение количества отслеживаемых областей.
Утверждения для добавления двух областей проходят.
Утвержденияпосле каждого сбоя удаления.
Я проверяю, что созданный мною объект среднего уровня правильно запрашивает эти события мониторинга запуска / остановки, а не сам CLLocationManager
.
Надеюсь, это приведет к некоторыммного смысла, и извините, если это немного бессвязно;Я просто пытаюсь включить всю необходимую информацию!