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

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.

  • Prueba de suscripción en Android: elemento no encontrado
  • Prueba de una biblioteca de Android con Robolectric
  • Cómo probar la aplicación empresarial android en varios dispositivos
  • Robolectric + rxJava + retrofit Segunda llamada lanza java.io.InterruptedIOException
  • Android Marshmallow Permisos de Pruebas
  • Prueba de unidad automatizada para Android / Ant
  • ApplicationTestCase obsoleto en el nivel 24 de API
  • Mockito en el emulador de Android
  • ¿Cómo puedo obtener identificadores, nombres o rutas x para elementos ui utilizados en una aplicación para móviles (Android / iOS) para pruebas de automatización móvil?
  • Prueba de un ContentProvider personalizado en Android
  • Java.lang.RuntimeException: ¡Stub! - ¿Cobertura de código de Android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.