Где OCUnit хранит NSUserDefaults? - PullRequest
1 голос
/ 01 июня 2011

Я прочитал вопрос Простой способ просмотреть сохраненные NSUserDefaults?

Я нашел файл .plist для приложения, но где он находится для комплекта тестирования?

Ответы [ 3 ]

5 голосов
/ 03 июня 2011

Если вы используете интеграцию Xcode 4 с OCUnit, он вставляет тестовый пакет в работающее приложение.Поэтому NSUserDefaults сохраняются в самом приложении.Это проблематично для модульных тестов: когда вы запускаете приложение вручную, ваши значения по умолчанию могут быть перезаписаны вашими тестами.

Вместо непосредственного использования [NSUserDefaults standardUserDefaults] используйте внедрение зависимостей, передавая пользовательские значения по умолчанию в качестве аргумента инициализатора,Затем вы можете пройти двойной тест, который вы можете запросить.(Альтернативой внедрению зависимостей является возвращение NSUserDefaults из вспомогательного метода, переопределяющего этот метод для возврата двойного теста при необходимости.)

2 голосов
/ 06 февраля 2012

В моей среде (Xcode 4.2, запуск тестов в симуляторе) NSUserDefaults записывает в следующий файл:

~/Library/Application Support/iPhone Simulator/Library/Preferences/otest.plist`

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

otest.plist гарантированно будет записано, однако, если что-то вызывает NSUserDefault метод экземпляра synchronize во время выполнения тестов.

1 голос
/ 01 июня 2011

Кажется, что OCUnit не хранит NSUserDefaults постоянно, а скорее в памяти.Но я могу ошибаться.

...