Я нашел файл .plist для приложения, но где один для тестового пакета?
Ответ 1
Кажется, что OCUnit не сохраняет NSUserDefaults настойчиво, а скорее в памяти. Но я мог ошибаться.
Ответ 2
Если вы используете интеграцию Xcode 4 с OCUnit, она вводит тестовый комплект в запущенное приложение. Поэтому NSUserDefaults сохраняются в самом приложении. Это проблематично для модульных тестов: при запуске приложения вручную ваши настройки по умолчанию могут быть перезаписаны вашими тестами.
Вместо прямого использования [NSUserDefaults standardUserDefaults] используйте инъекцию зависимостей, передав значения по умолчанию пользователя в качестве аргумента инициализатора. Затем вы можете пройти в тестовом двойном, который вы можете запросить. (Альтернатива инъекции зависимостей возвращает NSUserDefaults из вспомогательного метода, переопределяя этот метод, чтобы возвращать двойной тест при необходимости.)
Ответ 3
В моей среде (Xcode 4.2, запуск тестов в симуляторе) NSUserDefaults записывается в следующий файл:
Я предполагаю, что вы не видели файл из-за механизма кэширования NSUserDefaults (объяснено в ссылке на класс), и потому, что ваши тесты модуля проекта не запускаются достаточно долго, чтобы истечь интервал времени кеширования.
otest.plist гарантируется, однако, если что-то вызывает метод экземпляра NSUserDefaultsynchronize во время выполнения тестов.