Вы можете использовать специализированный контекст для общих предпочтений.RenamingDelegatingContext
делегирует все в контекст.Когда мы получаем доступ к SharedPreference из Context
, мы используем getSharedPreferences(String name, int mode)
.
Здесь, расширяя RenamingDelegatingContext
, мы переопределяем getSharedPreferences и притворяем параметр name с помощью test PREFIX
, поэтому при запуске теста он записывает в файл настроек, который отличается от основного приложения.
public class SpecializedMockContext extends RenamingDelegatingContext {
public static final String PREFIX = "test.";
public SpecializedMockContext(Context context) {
super(context, PREFIX);
}
@Override
public SharedPreferences getSharedPreferences(String name, int mode) {
return super.getSharedPreferences(PREFIX + name, mode);
}
}
Установите этот SpecialisedMockContext для своего тестового контекста приложения.setContext(specialisedMockContext)
и createApplication()
.