Я очень новичок в Robolectric, поэтому извиняюсь заранее, если мне не хватает чего-то очевидного здесь. У меня есть приложение, которое загружает базу данных из каталога assets
с использованием SQLiteAssetHelper, и я бы хотел протестировать эту базу данных, используя структуру Robolectric. Я могу получить ссылку на базу данных, но она кажется пустой. SQLiteAssetHelper выводит сообщение «успешно открытая база данных» в журнал, но в базе данных нет таблиц.Использование Robolectric с SQLiteAssetHelper
Edit: Вот код, я использую, чтобы получить базу данных в моем setUp
метод с использованием класса @ user2953017 размещены ниже:
@Before
public void setUp() {
Context context = Robolectric.getShadowApplication().getApplicationContext();
SQLiteDatabase db = (new DataBaseWrapper(context)).getReadableDatabase();
Cursor c = db.rawQuery("SELECT name FROM sqlite_master WHERE type='table'", null);
if (!c.moveToFirst()) {
Log.w("debug", "No tables!");
}
// My second query here fails, since the database contains no tables.
}
От LogCat:
W/debug: No tables!
DEBUG: Loading resources for android from jar:/home/<name>/.m2/repository/org/robolectric/android-res/4.1.2_r1_rc/android-res-4.1.2_r1_rc-real.jar!/res...
E/Debug: java.lang.RuntimeException: SQL exception in query
причиной исключения SQL является то, что имя таблицы, указанное в запросе, не найдено.
Буду благодарен за любые советы.
Большое спасибо за вашу помощь. Я получаю исключение «FileNotFound» из конструктора 'FileOutputStream' в' copyDataBase() '. 'outFileName' установлен в'/data/data//databases/ '. Любая идея, что здесь происходит не так? –
Ben
Вы пишете этот файл на SD-карте? Если да, то добавьте эту строку в manifest.xml: .. и не пытайтесь использовать свой путь DB_PATH + DB_NAME –
Я просто использую внутреннее хранилище, и я получаю 'outFileName' из' DB_PATH + DB_NAME'. Спасибо за вашу помощь. Я обновлю этот вопрос, если мне удастся заставить это работать, когда у меня будет время снова заглянуть в него. – Ben