Android: ¿Cómo puedo guardar, borrar y restaurar SharedPreferences para la prueba de unidades?

Sé cómo borrar SharedPreferences para ejecutar mis pruebas de unidad en un estado definido como este: PreferenceManager.getDefaultSharedPreferences(getActivity()).edit().clear().commit()

Sin embargo, me gustaría poder guardar y restaurar la configuración que prefiero como usuario de mi propia aplicación después de ejecutar las pruebas de unidad.

¿Hay una manera fácil de hacer esto sin guardar y restaurar manualmente cada elemento de preferencia individualmente?

Gracias, Jeff

One Solution collect form web for “Android: ¿Cómo puedo guardar, borrar y restaurar SharedPreferences para la prueba de unidades?”

Suena como lo que necesita hacer es proporcionar un contenedor en SharedPreferences que expone su propia interfaz de preferencias compartidas. P.ej

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

Cualquiera que sea su clase en prueba (por ejemplo, una actividad) puede utilizar una implementación concreta de PreferencesProvider que llama a PreferenceManager.getDefaultSharedPreferences … etc. En su clase de prueba, puede sustituir una implementación concreta falsa para devolver lo que quiera para sus pruebas.

De esta manera, su proveedor de preferencias se desacopla de su clase de aplicación y las pruebas se vuelven simples. De hecho, sus pruebas nunca necesitan tocar las preferencias reales almacenadas en su teléfono.

Poner esto en acción, sin embargo, requiere algún tipo de mecanismo de inyección de dependencia como RoboGuice.

  • Soluciones actuales para probar aplicaciones de Android
  • Prueba de una biblioteca de Android con Robolectric
  • Envío de mayúsculas a un TextEdit durante pruebas instrumentadas
  • ¿Cómo enviar eventos clave a un emulador sin cabeza en una prueba de instrumentación?
  • Robolectric + rxJava + retrofit Segunda llamada lanza java.io.InterruptedIOException
  • Deshabilitar eventos a nivel de sistema en Android mono
  • Cómo inyectar el evento de clic con Android UiAutomation.injectInputEvent
  • Pruebas de facturación en la aplicación con cuentas de prueba
  • Cómo detener y reiniciar una actividad en una prueba de instrumentación de Android?
  • Prueba de GPS en Android
  • Uso de la actividad de no producción para probar con Android Studio
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.