Я пытаюсь смоделировать простые общие настройки, используя Mockito.Поскольку примеры в Google слишком сложны, чтобы что-то из них сделать, я решил пойти дальше самостоятельно.Общие настройки настраиваются с помощью кинжала.Сбой с NPE в методе saveString в классе SharedPreferenceManager в строке putString.
@Module
public class StudentModule {
@Provides
@Singleton
static Context getContext(Application application) {
return application.getApplicationContext();
}
@Provides
@Singleton
static SharedPreferences getSharedPreferences(Context context) {
return PreferenceManager.getDefaultSharedPreferences(context);
}
}
Существует класс менеджера:
public class SharedPreferenceManager {
private SharedPreferences sharedPreferences;
private Context context;
@Inject public SharedPreferenceManager(SharedPreferences sharedPreferences, Context context){
this.sharedPreferences=sharedPreferences;
this.context=context;
}
public String doSomething(){
return sharedPreferences.getString("s","");
}
public void saveString(String s){
System.out.println(sharedPreferences.getClass().getSimpleName());
SharedPreferences.Editor editor=sharedPreferences.edit();
editor.putString("s","bis").apply();
}
}
Вот тест:
@RunWith(MockitoJUnitRunner.class)
public class MockTest {
@InjectMocks
SharedPreferenceManager sharedPreferenceManager;
@Mock SharedPreferences sharedPreferences;
@Before
public void setup() {
MockitoAnnotations.initMocks(this);
}
@Test
public void isSharedPefWorking(){
sharedPreferenceManager.saveString("bis");
assertEquals("bis",sharedPreferenceManager.doSomething());
}
}