Как распознать системные оповещения на устройстве с помощью инфраструктуры тестирования 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, и это подготовит ваше приложение ко всем разрешениям.

Кстати, если у кого-то есть лучшее решение, пожалуйста, предоставьте, потому что я тоже хочу знать;)

Другие вопросы по тегам