Domanda Android: come posso ripristinare / cancellare le preferenze dell'applicazione durante il test dell'unità?


Voglio iniziare con un ambiente di test coerente, quindi ho bisogno di ripristinare / cancellare le mie preferenze. Ecco il SetUp per il test che ho finora. Non sta segnalando errori e i miei test passano, ma le preferenze non vengono cancellate.

Sto testando l'attività "MainMenu", ma passo temporaneamente all'attività OptionScreen (che estende la classe PreferenceActivity di Android). Vedo il test aprire correttamente OptionScreen durante la corsa.

 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 Code:

    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);

Grazie!


21
2017-10-08 19:43


origine


risposte:


Il problema è che non si sta salvando l'editor originale dalla chiamata edit (), e si recupera una nuova istanza dell'editor e si chiama commit () su quello senza aver apportato alcuna modifica a quello. Prova questo:

Editor editor = settings.edit();
editor.clear();
editor.commit();

29
2017-10-08 21:19



la risposta è qui, test dell'unità Android: eliminazione dei prefs prima dell'attività di test

chiamata,

this.getInstrumentation().getTargetContext()

3
2018-03-01 20:43