Некоторая предыстория моей организации кода приложений:
В данный момент я использую специальную ORM для доступа к БД, где каждая таблица разбита на модель (просто простой класс Java ненаследование от любых компонентов Android), которая охватывает обычные операции CRUD.Я не использую контент-провайдера, так как все эти данные являются частными для приложения.
Я храню один экземпляр моего databaseopenhelper и контекст приложения в классе приложения моего приложения
class MyApplication extends Application {
private static Context mContext;
@Override
public void onCreate() {
super.onCreate();
mContext = this;
dbHelper = new DatabaseHelper(this); // Subclass of SQLiteOpenHelper
}
public static Context getContext(){
return mContext;
}
Все действия, которые касаются БД, открывают базу данных onResume и закрывают ее onPause.
Это работало нормально, пока я не начал модульное тестирование, когда столкнулся с первой проблемой с использованием синглетонов - нарушением инкапсуляцииопределенно не в состоянии использовать RenamingDelegatingContext для тестирования с конкретной тестовой базой данных)не могу придумать лучшего способа сделать это (если не считать передачи контекста и dbhelpers явно - что является болью)
2) Если это не совсем сумасшедшая идея, какой будет лучший путь?о модульном тестировании этой настройки?