Я создаю платформу iOS, которая собирает информацию о различных событиях в приложении iOS и выполняет локальный и удаленный анализ. Некоторые из этих событий нельзя протестировать вне приложения: например, переходы контроллера представления. Чтобы протестировать эти события, я создал тестовое приложение для iOS и хотел бы использовать тесты пользовательского интерфейса Xcode для:
Инициируйте переход контроллера представления, например, нажав кнопку, которая нажимает VC на контроллер навигации, или переключившись на другую вкладку в контроллере вкладок.
Убедитесь, что платформа смогла обнаружить переходы контроллера представления и сгенерировать необходимые события (например, отправить их на сервер).
Проблема в том, что тесты пользовательского интерфейса Xcode выполняются вне приложения, поэтому я не могу получить доступ к каким-либо общим объектам, чтобы убедиться, что инфраструктура работает правильно. Я также не могу вставлять какие-либо фиктивные объекты, потому что, опять же, у меня нет доступа к фреймворку, загруженному в процессе приложения.
Я дошел до того, что попытался загрузить фреймворк в своего рода тестовом режиме и обновить метку с некоторыми результатами, которые затем сможет прочитать тест пользовательского интерфейса. Но даже это сложно, потому что XCUIElement
не дает мне фактический текст элемента; Я могу запрашивать только элементы с предопределенным текстом. Я могу работать с этим, но это кажется очень окольным подходом к чему-то, что должно быть довольно тривиальным.
Существуют ли какие-либо лучшие альтернативы для тестирования событий, которые можно смоделировать только в работающем приложении, а затем для проверки того, что моя среда способна их обнаруживать и обрабатывать? В дополнение к просмотру переходов контроллера меня также интересуют сенсорные взаимодействия, события акселерометра и другие функции, которые нельзя смоделировать вне приложения. Естественно, я могу имитировать эти события для модульного тестирования, но я также хотел бы автоматически проверять, что, когда эти события происходят в реальном приложении, в моей среде генерируются правильные ответы.