В последние несколько дней я играл с UIAutomation от Apple, пытаясь собрать набор приемочных тестов для разработки приложения, над которым я работаю (в стиле BDD). .).
Одна вещь, с которой я сталкиваюсь, это как установить SUT в заданное состояние, чтобы я мог начать свои тесты, если мне нужно установить какое-то внутреннее состояние для этого. Проблема в том, что среда Apple Javascript не предоставляет никаких функций, которые я мог бы использовать для связи с устройством, кроме как через его интерфейс (я уверен, что это, вероятно, из-за замысла, но иногда это просто нецелесообразно): пока решения типа iCuke или Frank может использовать HTTP для связи с сервером прослушивания, встроенным в целевое приложение, для целей такой связи, в среде UIAutomation прибора ничего подобного сделать невозможно. * * 1007
Глядя на предоставляемые API, я заметил, что в классе UIAApplication есть функция, которая позволяет мне устанавливать значение предпочтения на целевом устройстве ( см. Здесь для получения более подробной информации ): мне пришло в голову, что Я мог бы установить некоторый код на устройстве, которое могло бы использовать KVO для отслеживания шанса на заданный ключ предпочтения, а затем я мог бы использовать его как средство для связи с некоторым специальным вспомогательным кодом, специфичным для теста, в целевом приложении (реагируя, когда значение предпочтения изменено).
Я начал играть, чтобы посмотреть, смогу ли я сделать эту работу, но наткнулся на кирпичную стену, потому что не могу найти способ получить доступ к настройкам, установленным UIAutomation, из целевого приложения. Проблема в том, что настройки, кажется, установлены на уровне домена хоста (то есть они установлены в файле /Library/Preferences/com.mycompany.MyApp
), а не в изолированной папке /Library
, специфичной для моего приложения.
Я точно знаю, что установленные мной настройки относятся к устройству - я вижу, как значение изменяется в вышеупомянутом файле, но я не могу найти способ доступа к этим значениям с помощью NSUserDefaults.
Может ли кто-нибудь пролить свет на то, как я должен получить доступ к настройкам, сохраненным на этом уровне (NSLocalDomain ...) на устройстве iOS?
NB: Я понимаю, что это полный взлом, но, к сожалению, среда, которую Apple предоставляет сейчас, кажется, совершенно не соответствует цели, поэтому я стараюсь изо всех сил заполнить пробелы вместо дальнейшего обновления от Apple. Если вы будете искать в Интернете, вы увидите, что другие люди имели очень похожий опыт и пытались обойти существующие недостатки аналогичным образом.
Обновление : есть вероятность, что это ошибка согласно этой теме . Я не могу подтвердить это точно, хотя ..