Чтение из Keychain Xcode 9 simulators ничего не возвращает


Поскольку я использую Xcode 9, все модульные тесты, связывающиеся с keychain, не работают. Это также происходит с Xcode GM. Как я проследил, нет ошибок OSStatus при чтении и записи, но чтение из keychain ничего не возвращает и вызывает сбой для всех модульных тестов, использующих keychain. Я уже сталкивался с чем-то подобным, когда Apple выпустила Xcode 8 с симулятором iOS 10, который не работал, и Apple исправила это в Xcode 8.2. Кто-нибудь еще сталкивается с этой проблемой с iOS 11 simulator тоже? Есть идеи по этому поводу?

2 4

2 ответа:

Наконец мы нашли проблему. Как сказал @Gix, проблема заключается в модульных тестах внутри нашей структуры. Тесты SDK не имеют контекста приложения, поэтому связка ключей/a недоступна. Но на самом деле мы не хотели перемещать тесты из SDK в приложение, как это сделали вы @Gix. Таким образом, мы могли бы решить эту проблему, просто добавив целевой объект приложения в проект SDK, а затем установить его в качестве хоста для модульных тестов SDK. Сейчас проходят модульные тесты. Но я до сих пор не понимаю, почему его единственный сбой в новом Xcode. Мы понимаем, что это не проблема симулятора iOS 11, потому что тот же сбой происходит и с симуляторами iOS 10 в Xcode 9. Таким образом, это ограничение является свойством Xcode 9 Simulator app, которое может быть исправлено с помощью решения, которое я предоставил. Это все еще грязно, но это работает, и вам не нужно перемещать тесты из SDK в приложение!

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

Моя проблема заключалась в том, как я настроил свой проект. В моем проекте у меня есть рабочее пространство с 3 проектами, 1-основное приложение, 1-фреймворк/библиотека и 1-проект Pods. Я получал доступ к связке ключей в моем фреймворке, и моя цель модульных тестов была частью этого проекта.

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

Надеюсь, это поможет!