Domanda

Voglio iniziare con un ambiente di test coerente quindi ho bisogno di ripristinare / cancellare le mie preferenze. Ecco il programma di installazione di prova che ho finora. Non è segnalando eventuali errori e le mie prove passare, ma le preferenze non vengono cancellati.

sto testando l'attività "MainMenu", ma passare temporaneamente l'attività OptionScreen (che estende la classe PreferenceActivity di Android.) Faccio vedere il test aprire correttamente l'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.

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

Grazie!

È stato utile?

Soluzione

Il problema è che non sta salvando l'editor originale dalla chiamata di modifica (), e si recupera una nuova istanza del curatore e chiamare commit () su tale senza aver fatto alcuna modifica che uno. Prova questo:

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

Altri suggerimenti

risposta è qui, android unità di prova: prefs di compensazione prima di testare l'attività

chiamata,

this.getInstrumentation().getTargetContext()
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top