Android: как я могу сохранить, очистить, а затем восстановить SharedPreferences для модульного тестирования? - PullRequest
4 голосов
/ 22 декабря 2010

Я знаю, как очистить SharedPreferences для запуска моих модульных тестов в определенном состоянии, как это: PreferenceManager.getDefaultSharedPreferences(getActivity()).edit().clear().commit()

Однако я хотел бы иметь возможность сохранять и восстанавливать настройки, которые я предпочитаю как пользовательмоего собственного приложения после запуска юнит-тестов.

Есть ли простой способ сделать это без ручного сохранения и восстановления каждого элемента предпочтений по отдельности?

Спасибо, Джефф

1 Ответ

2 голосов
/ 24 апреля 2011

Похоже, вам нужно предоставить оболочку для SharedPreferences, которая предоставляет ваш собственный интерфейс общих настроек. Э.Г.

public interface PreferencesProvider {
    String getStringValue(String key);
}

Каким бы ни был ваш тестируемый класс (например, Activity), можно использовать конкретную реализацию PreferencesProvider, которая вызывает PreferenceManager.getDefaultSharedPreferences ... и т. Д. В вашем тестовом классе вы можете заменить поддельную конкретную реализацию так, чтобы она возвращала все ваши тесты.

Таким образом, ваш поставщик предпочтений отделен от класса вашего приложения, и тестирование становится простым. На самом деле ваши тесты никогда не должны касаться фактических настроек, сохраненных на вашем телефоне.

Однако для реализации этого необходим некоторый механизм внедрения зависимостей, такой как RoboGuice.

...