Можем ли мы использовать Центр уведомлений в xcuitest для прослушивания внутренних событий? - PullRequest
1 голос
/ 18 января 2020

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

Подход 1: (Центр уведомлений для прослушивания событий)

App code:
     NotificationCenter.default.post(name: Notification.Name.PageLoadCompleteTestReady, object: nil)

Test Code:
// Click to load a new screen
     NotificationCenter.default.addObserver(self, selector: #selector(self.printState), name: NSNotification.Name.PageLoadCompleteTestReady, object: nil)
// Continue execution on new screen.

Подход 2: (Реализация делегатов в модуле приложения путем импорта модуля в тестовый код пользовательского интерфейса)

Но ни один из вышеперечисленных методов не работает. С подходом 1: наблюдатель уведомления на стороне испытания не вызывается. При подходе 2: класс, который реализовал тестируемый базовый код делегата, не вызывается, а вызывается в модуле.

1 Ответ

0 голосов
/ 18 января 2020

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

Что вы можете сделать, это установить состояние приложения после запуска условий для отправки уведомлений. В конце концов, это уведомление должно привести к некоторым изменениям пользовательского интерфейса, в противном случае его тестирование должно стать частью модульных тестов.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...