java - tutorial - Proporcionar datos de prueba para SharedPreferences para Robolectric
robolectric tutorial (3)
Acabo de empezar a usar Robolectric y parece ser más o menos lo que necesito. Sin embargo, me he topado con un obstáculo con respecto al uso de SharedPreferences.
Tengo dos casos de prueba
La actividad espera una nueva / vacía sharedPreferences
La actividad espera que las Preferencias compartidas ya contengan algunos datos
Para el caso de prueba 1, las pruebas están pasando como se esperaba, así que todo bien :)
Sin embargo, para el caso de prueba 2 parece que no puedo encontrar una buena manera de proporcionar a Robolectric algunos datos falsos, por lo que la actividad puede acceder a estos datos falsos.
Se siente como un caso de uso muy común, ¡pero no logro entender cómo hacerlo!
Descubrí cómo - parece tan obvio ahora!
Para aquellos que están interesados, solo obtienes las Preferencias compartidas y las rellena con los datos requeridos.
SharedPreferences sharedPreferences = ShadowPreferenceManager.getDefaultSharedPreferences(Robolectric.application.getApplicationContext());
sharedPreferences.edit().putString("testId", "12345").commit();
Si tiene una SharedPreferences personalizada, debería poder hacer esto (realmente no se ha probado correctamente, pero también debería funcionar)
SharedPreferences sharedPreferences = Robolectric.application.getSharedPreferences("you_custom_pref_name", Context.MODE_PRIVATE);
sharedPreferences.edit().putString("testId", "12345").commit();
Espero que esto haya ayudado a alguien :)
La respuesta aceptada que he votado es, por supuesto, la correcta. Las cosas han cambiado un poco si estás usando Robolectric 3
SharedPreferences sharedPreferences =
RuntimeEnvironment.application.getSharedPreferences(
"you_custom_pref_name", Context.MODE_PRIVATE);
A continuación, puede agregar una preferencia como de costumbre
sharedPreferences.edit().putBoolean(
activity.getString(R.string.pref_somepref), true).commit();
Robolectric 3.1 SNAPSHOT solución que funciona para mí ... y puede funcionar para usted
Context context = RuntimeEnvironment.application.getApplicationContext();
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
sharedPreferences.edit().putBoolean("useOnlyOnWifi", false).commit();
Uso este fragmento de código solo para probar en wifi