Android: ¿Cómo restablecer / eliminar las preferencias de la aplicación durante las pruebas de unidad?
Quiero comenzar con un entorno de prueba consistente, así que necesito restablecer / borrar mis preferencias. Aquí está el SetUp para la prueba que tengo hasta ahora. No está reportando errores, y mis pruebas pasan, pero las preferencias no están siendo borradas.
Estoy probando la actividad "MainMenu", pero temporalmente cambio a la actividad de OptionScreen (que extiende la clase PreferenceActivity de Android). Veo que la prueba abre correctamente la OptionScreen durante la ejecución.
- PreferenceActivity no se muestra (pantalla en blanco)
- ¿Cómo puedo agregar por programación EditTextPreferences a mi PreferenceFragment?
- Preferencias de Android: ¿Cómo cargar los valores predeterminados cuando el usuario no ha utilizado la pantalla de preferencias?
- Actividad de preferencias de Android IllegalArgumentException: fragmento no válido para esta actividad
- ¿Es la lectura / escritura preferencias una operación costosa?
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 Código:
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);
¡Gracias!
- ¿Por qué Custom DialogPreference no se activa en onSharedPreferenceChanged?
- Obtener preferencias en AppWidget Provider
- Uso de preferencias no predeterminadas en PreferenceActivity
- ¿Cuál es el nombre de archivo utilizado por defecto las preferencias compartidas?
- Utilizar una subclase personalizada de SharedPreferences con PreferenceActivity o PreferenceFragment
- Las preferencias compartidas no persisten después de reiniciar la aplicación
- Usar TimePicker o DatePicker en la pantalla Preferencias en Android
- Archivo de preferencias del usuario vs Archivo de preferencias de la aplicación
El problema es que no está guardando el editor original de la llamada edit (), y se obtiene una nueva instancia del editor y la llamada commit () en que sin haber realizado ningún cambio en el mismo. Prueba esto:
Editor editor = settings.edit(); editor.clear(); editor.commit();
La respuesta está aquí, unidad de prueba de Android: borrar prefs antes de la actividad de prueba
llamada,
this.getInstrumentation().getTargetContext()
- Entrada recursiva para ejecutarPendingTransactions
- No se puede cargar la biblioteca: reloc_library : no se puede localizar 'rand'