Как распознать системные оповещения на устройстве с помощью инфраструктуры тестирования KIF?
Из этой статьи я узнал, как распознавать системные оповещения на симуляторе, используя следующую строку кода:
self.viewTester.acknowledgeSystemAlert()
К сожалению, код KIF имеет тег #if TARGET_IPHONE_SIMULATOR, поэтому он не будет работать на устройстве. Как я могу обойти уведомления о разрешениях на устройстве во время автоматического тестирования?
1 ответ
У меня была та же проблема, и вот решение, которое я нашел:
Это правда, что эта функция KIF не работает на устройстве, она только для симуляторов! Таким образом, вы можете иметь UITest в UITarget и только один тестовый пример, который добавит UIMonitors, как это:
// ask for all the permission from users then :
_ = addUIInterruptionMonitor(withDescription: "") { alert -> Bool in
let confirmLabels = ["Allow", "OK"]
for (_, label) in confirmLabels.enumerated() {
let allow = alert.buttons[label]
if allow.exists {
allow.tap()
break
}
}
return true
}
// do some UI interaction here like tapping on some view in app
Таким образом, вы можете вызывать этот UITest каждый раз перед запуском ваших UnitTests, и это подготовит ваше приложение ко всем разрешениям.
Кстати, если у кого-то есть лучшее решение, пожалуйста, предоставьте, потому что я тоже хочу знать;)