Как написать тест Robolectric (2.3) с использованием базы данных

Из-за последнего выпуска Robolectic версии 2.3 было написано, что ( https://github.com/robolectric/robolectric/releases ):

Теперь Robolectric использует реальную реализацию SQLite вместо коллекции теней и подделок. Теперь тесты могут быть записаны для проверки реального поведения базы данных.

Я не нашел никакой документации «Как». Я хотел бы знать, как мне выполнить тест, например, с помощью операции SQLiteDatabase. Где я должен помещать файл .db, чтобы тест использовал его.

Вам нужно будет поместить файл .db в папку src/test/resources/ .

Например, sample.db

Затем в вашем тестовом модуле setUp () вызовите:

 @Before public void setUp() throws Exception { String filePath = getClass().getResource("/sample.db").toURI().getPath(); SQLiteDatabase db = SQLiteDatabase.openDatabase( (new File(filePath)).getAbsolutePath(), null, SQLiteDatabase.OPEN_READWRITE); // perform any db operations you want here } 

Вот пример того, как тестировать базу данных, oprations.

  // just a wrapper for the content values map Agenda agenda = new Agenda(); agenda.setName("MyAgenda"); agenda.setDate("current date"); long rowId = agendaManager.insert(agenda); // the guy who makes database operations Cursor query = context.getContentResolver().query(AgendaProvider.AGENDA_CONTENT_URI, null, null, null, null); assertThat(query.getCount()).isEqualTo(1); query.moveToNext(); Agenda dbAgenda = new Agenda(query); assertThat(dbAgenda.getRowId()).isPositive(); assertThat(dbAgenda.getRowId()).isEqualTo(rowId); assertThat(dbAgenda.getName()).isEqualTo(agenda.getName()); assertThat(dbAgenda.getDate()).isEqualTo(agenda.getDate()); 

Более подробный пример можно найти здесь: https://github.com/nenick/android-gradle-template/blob/master/UnitTestsRobolectric/src/test/java/com/example/managers/AgendaManagerTest.java