Android: как сбросить / сбросить настройки приложения во время модульного тестирования? - PullRequest
21 голосов
/ 08 октября 2010

Я хочу начать с согласованной тестовой среды, поэтому мне нужно сбросить / очистить свои настройки. Вот настройка для тестирования, которую я имею до сих пор. Он не сообщает об ошибках, и мои тесты проходят, но настройки не очищаются.

Я тестирую действие "MainMenu", но временно переключаюсь на действие OptionScreen (которое расширяет класс PreferenceActivity в Android). Я вижу, что тест правильно открывает OptionScreen во время выполнения.

 public class MyTest extends ActivityInstrumentationTestCase2<MainMenu> {

...

    @Override
    protected void setUp() throws Exception {
    super.setUp();

    Instrumentation instrumentation = getInstrumentation();
    Instrumentation.ActivityMonitor monitor = instrumentation.addMonitor(OptionScreen.class.getName(), null, false);

    StartNewActivity(); // See next paragraph for what this does, probably mostly irrelevant.
    activity = getActivity();
    SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(activity);
    settings.edit().clear();
    settings.edit().commit(); // I am pretty sure this is not necessary but not harmful either.

StartNewActivity код:

    Intent intent = new Intent(Intent.ACTION_MAIN);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    intent.setClassName(instrumentation.getTargetContext(),
            OptionScreen.class.getName());
    instrumentation.startActivitySync(intent);
    Activity currentActivity = getInstrumentation()
            .waitForMonitorWithTimeout(monitor, 5);
    assertTrue(currentActivity != null);

Спасибо!

Ответы [ 2 ]

29 голосов
/ 09 октября 2010

Проблема в том, что вы не сохраняете исходный редактор из вызова edit (), а извлекаете новый экземпляр редактора и вызываете commit (), не внося в него никаких изменений.Попробуйте это:

Editor editor = settings.edit();
editor.clear();
editor.commit();
3 голосов
/ 02 марта 2012
...