Тестируйте и отлаживайте свою базу данных

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

Проверьте свою базу данных

Есть 2 способа протестировать вашу базу данных:

  • На устройстве Android.
  • На вашей основной машине разработки (не рекомендуется).

Сведения о тестировании, специфичном для миграции баз данных, см. в разделе Тестирование миграции .

Протестируйте на устройстве Android

Рекомендуемый подход к тестированию реализации вашей базы данных — написание теста JUnit, запускаемого на устройстве Android. Поскольку эти тесты не требуют создания активности, они должны выполняться быстрее, чем тесты пользовательского интерфейса.

При настройке тестов вам следует создать версию базы данных в памяти, чтобы сделать тесты более герметичными, как показано в следующем примере:

Котлин

@RunWith(AndroidJUnit4::class)
class SimpleEntityReadWriteTest {
    private lateinit var userDao: UserDao
    private lateinit var db: TestDatabase

    @Before
    fun createDb() {
        val context = ApplicationProvider.getApplicationContext<Context>()
        db = Room.inMemoryDatabaseBuilder(
                context, TestDatabase::class.java).build()
        userDao = db.getUserDao()
    }

    @After
    @Throws(IOException::class)
    fun closeDb() {
        db.close()
    }

    @Test
    @Throws(Exception::class)
    fun writeUserAndReadInList() {
        val user: User = TestUtil.createUser(3).apply {
            setName("george")
        }
        userDao.insert(user)
        val byName = userDao.findUsersByName("george")
        assertThat(byName.get(0), equalTo(user))
    }
}

Ява

@RunWith(AndroidJUnit4.class)
public class SimpleEntityReadWriteTest {
    private UserDao userDao;
    private TestDatabase db;

    @Before
    public void createDb() {
        Context context = ApplicationProvider.getApplicationContext();
        db = Room.inMemoryDatabaseBuilder(context, TestDatabase.class).build();
        userDao = db.getUserDao();
    }

    @After
    public void closeDb() throws IOException {
        db.close();
    }

    @Test
    public void writeUserAndReadInList() throws Exception {
        User user = TestUtil.createUser(3);
        user.setName("george");
        userDao.insert(user);
        List<User> byName = userDao.findUsersByName("george");
        assertThat(byName.get(0), equalTo(user));
    }
}

Протестируйте на своем хост-компьютере

Room использует библиотеку поддержки SQLite, которая предоставляет интерфейсы, соответствующие интерфейсам классов Android Framework. Эта поддержка позволяет вам передавать пользовательские реализации библиотеки поддержки для тестирования запросов к базе данных.

Проверьте свои миграции

Room поддерживает инкрементную миграцию базы данных , чтобы сохранить существующие данные приложения в ситуациях, когда обновление приложения меняет схему базы данных. Однако неправильно определенная миграция может привести к сбою вашего приложения. Обязательно протестируйте миграцию базы данных Room .

Отладка вашей базы данных

Существует несколько инструментов и процессов, которые можно использовать для отладки базы данных.

Используйте инспектор базы данных

В Android Studio 4.1 и более поздних версиях инспектор баз данных позволяет вам проверять, запрашивать и изменять базы данных вашего приложения во время его работы. Инспектор базы данных совместим с версией SQLite, поставляемой в комплекте с Android, и включает специальные функции для использования с Room:

  • Используйте действия с переплетом для быстрого выполнения запросов из классов DAO .
  • Немедленно просматривайте обновления в Инспекторе баз данных, когда работающее приложение вносит изменения в данные.

Дополнительные сведения об Инспекторе базы данных см. в разделе Отладка базы данных с помощью Инспектора базы данных .

Дамп данных из командной строки

Android SDK включает в себя инструмент базы данных sqlite3 для проверки баз данных вашего приложения. Он включает в себя такие команды, как .dump для печати содержимого таблицы и .schema для печати инструкции SQL CREATE для существующей таблицы.

Вы также можете выполнять команды SQLite из командной строки, как показано в следующем фрагменте:

adb -s emulator-5554 shell
sqlite3 /data/data/your-app-package/databases/rssitems.db

Дополнительные сведения см. в документации по командной строке sqlite3 , доступной на веб-сайте SQLite.

Дополнительные ресурсы

Чтобы узнать больше о тестировании и отладке базы данных комнат, см. следующие дополнительные ресурсы:

Сообщения в блоге

Видео