Как протестировать методы, работающие с базой данных SQLite в Android?

Я сделал приложение, которое работает с базой данных SQLite, открывая, извлекая данные и вставляя в нее данные. Теперь я хочу проверить свои методы.

Итак, у меня есть два класса: один «SQLiteHelper», который расширяет SQLiteOpenHelper для открытия, создания и обновления базы данных, а другой — класс DataSource, который создает объект SQLiteDatabase и содержит все мои методы, имеющие дело с базой данных.

Итак, для вызова любого метода мне нужно вызвать метод open в классе SQLiteHelper, перехватить результат в объекте SQLiteDatabse, затем создать объект класса DataSource и, наконец, вызвать метод (который содержит курсор в результате необработанного запроса). Например).

Я знаю, что он не будет работать с простым тестом JUnit, и я читал о Mock Objects, но я до сих пор не понимаю, как я могу использовать его в моем случае.


person user1753461    schedule 22.10.2012    source источник
comment
другой - это класс DataSource, который создает объект SQLiteDatabase - это неясно. SQLiteHelper должен создать SQLiteDatabase объект. Можете ли вы предоставить код вашего класса DataSource, чтобы прояснить проблему.   -  person Vitali Olshevski    schedule 22.10.2012
comment
открытый класс DataSource { частный статический SQLiteHelper dbHelper = null; База данных SQLiteDatabase; public void openDatabase (контекст контекста) { if (dbHelper == null) { dbHelper = new SQLiteHelper (контекст); dbHelper.openDataBase(SQLiteDatabase.OPEN_READWRITE); база данных = dbHelper.myDataBase; } }   -  person user1753461    schedule 22.10.2012
comment
Ага, понятно. Ничего важного в этом классе. Проверьте мой ответ в любом случае   -  person Vitali Olshevski    schedule 22.10.2012
comment
Если вы удовлетворены ответом, отметьте его как принятый.   -  person Vitali Olshevski    schedule 22.10.2012


Ответы (1)


Я знаю, что это не сработает с простым тестом JUnit.

Будет. Просто вызывайте свои методы как обычно и проверяйте результаты на правильность.

Важно только то, что вы должны предпочесть использовать IsolatedContext для своей базы данных. творчество. В этом случае исходный файл базы данных из приложения останется без изменений. Все тесты будут работать с отдельным файлом базы данных тестирования, который можно изменять или даже удалять столько раз, сколько вы хотите.

Вы можете получить соответствующий IsolatedContext по адресу ProviderTestCase2. (Вы также можете просмотреть ProviderTestCase2 источники, чтобы понять, как это работает.)

person Vitali Olshevski    schedule 22.10.2012
comment
AndroidTestCase — это не простой тест JUnit, его нельзя запустить на JVM. - person Christopher Perry; 02.06.2015