Я прочитал вопрос Легкий способ увидеть сохраненные NSUserDefaults?
Я нашел файл .plist для приложения, но где один для тестового пакета?
Я прочитал вопрос Легкий способ увидеть сохраненные NSUserDefaults?
Я нашел файл .plist для приложения, но где один для тестового пакета?
Кажется, что OCUnit не сохраняет NSUserDefaults
настойчиво, а скорее в памяти. Но я мог ошибаться.
Если вы используете интеграцию Xcode 4 с OCUnit, она вводит тестовый комплект в запущенное приложение. Поэтому NSUserDefaults сохраняются в самом приложении. Это проблематично для модульных тестов: при запуске приложения вручную ваши настройки по умолчанию могут быть перезаписаны вашими тестами.
Вместо прямого использования [NSUserDefaults standardUserDefaults]
используйте инъекцию зависимостей, передав значения по умолчанию пользователя в качестве аргумента инициализатора. Затем вы можете пройти в тестовом двойном, который вы можете запросить. (Альтернатива инъекции зависимостей возвращает NSUserDefaults из вспомогательного метода, переопределяя этот метод, чтобы возвращать двойной тест при необходимости.)
В моей среде (Xcode 4.2, запуск тестов в симуляторе) NSUserDefaults
записывается в следующий файл:
~/Library/Application Support/iPhone Simulator/Library/Preferences/otest.plist`
Я предполагаю, что вы не видели файл из-за механизма кэширования NSUserDefaults
(объяснено в ссылке на класс), и потому, что ваши тесты модуля проекта не запускаются достаточно долго, чтобы истечь интервал времени кеширования.
otest.plist
гарантируется, однако, если что-то вызывает метод экземпляра NSUserDefault
synchronize
во время выполнения тестов.