Подтвердить что ты не робот

Подключение внешней инфраструктуры к цели тестирования модуля UI, iOS

Итак, у меня уже есть проект, и я пытаюсь создать некоторые тесты пользовательского интерфейса, используя этот новый причудливый набор для тестирования пользовательского интерфейса, предоставляемый apple. Проблема в том, что тестовая цель не имеет доступа к какой-либо внешней инфраструктуре (и мне нужно сделать некоторые настройки с одним из них). Добавление фреймворка в фазах сборки и пути поиска каркаса основной цели ничего не делает.

После дня просмотра я узнал только одно: "делает вещи разными". Путем настройки Bundle Loader и Test Host на $(BUILT_PRODUCTS_DIR)/App.app/App, я все еще не мог импортировать внешние фреймворки в test.m, но я мог импортировать классы, которые делают это для них самостоятельно. И все было бы прекрасно и денди, если бы это не сломало кое-что. Установив Bundle и Host, мой тест пользовательского интерфейса не может выполнить метод запуска:

[[[XCUIApplication alloc] init] launch];

Он выходит из строя с ошибкой: Сбой утверждения: ошибка проверки пользовательского интерфейса - состояние приложения все еще не завершено.

В конце концов я смог удалить метод запуска из установки и запустить каждый отдельный тест вручную, поэтому он запускает приложение каждый раз перед выполнением, но это решение кажется настолько неправильным (особенно для некоторых более крупных проектов). Кто-нибудь знает правильный способ решения этой проблемы?

4b9b3361

Ответ 1

Что я сделал для этого, добавьте переменную окружения в XCUIApplication, чтобы указать, что тесты пользовательского интерфейса выполняются. Затем у меня есть предварительная проверка процессора для #DEBUG в основной части приложения, а затем проверьте, была ли установлена ​​переменная среды test; если он есть, выполните необходимые шаги для тестов пользовательского интерфейса.

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