Menguji dan mendebug database

Saat membuat database menggunakan library persistensi Room, penting untuk memastikan stabilitas database aplikasi serta data pengguna Anda. Halaman ini membahas cara menguji database dan melakukan langkah-langkah proses debug untuk membantu kelulusan pengujian Anda.

Menguji database Anda

Ada 2 cara untuk menguji database:

  • Di perangkat Android.
  • Di mesin pengembangan host (tidak direkomendasikan).

Untuk mengetahui informasi tentang pengujian yang dikhususkan bagi migrasi database, lihat Menguji Migrasi.

Melakukan pengujian di perangkat Android

Metode yang direkomendasikan untuk menguji penerapan database adalah menulis pengujian JUnit yang berjalan di perangkat Android. Pengujian ini tidak memerlukan pembuatan aktivitas sehingga akan lebih cepat dijalankan daripada pengujian UI.

Saat menyiapkan pengujian, Anda harus membuat versi database dalam memori agar pengujian menjadi lebih terisolasi, seperti dalam contoh berikut:

Kotlin

@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))
    }
}

Java

@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));
    }
}

Melakukan pengujian di mesin host

Room menggunakan SQLite Support Library, yang menyediakan antarmuka seperti dalam class Framework Android. Dukungan ini memungkinkan Anda menggunakan penerapan kustom support library untuk menguji kueri database.

Menguji migrasi

Room mendukung migrasi database inkremental untuk mempertahankan data aplikasi yang ada dalam situasi ketika update aplikasi mengubah skema database. Namun, migrasi yang tidak ditetapkan dengan benar dapat menyebabkan aplikasi Anda error. Pastikan Anda menguji migrasi database Room.

Men-debug database

Ada beberapa alat dan proses yang dapat digunakan untuk men-debug database.

Menggunakan Database Inspector

Pada Android Studio 4.1 dan yang lebih baru, Database Inspector memungkinkan Anda memeriksa, menjalankan kueri, dan mengubah database aplikasi saat aplikasi tersebut sedang berjalan. Database Inspector kompatibel dengan versi SQLite yang dipaketkan dengan Android dan menyertakan fitur khusus untuk digunakan dengan Room:

  • Gunakan tindakan gutter untuk menjalankan kueri dari class DAO dengan cepat.
  • Anda dapat seketika melihat info terbaru langsung di Database Inspector saat aplikasi yang sedang berjalan membuat perubahan pada data.

Untuk mempelajari Database Inspector lebih lanjut, lihat Men-debug database dengan Database Inspector.

Membuang data dari command line

SDK Android menyertakan alat database sqlite3 untuk memeriksa database aplikasi Anda. Hal ini mencakup perintah seperti .dump untuk mencetak isi tabel, dan .schema untuk mencetak pernyataan SQL CREATE untuk tabel yang sudah ada.

Anda juga dapat menjalankan perintah SQLite dari command line, seperti yang ditunjukkan dalam cuplikan berikut:

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

Untuk informasi selengkapnya, lihat dokumentasi command line sqlite3, yang tersedia di situs SQLite.

Referensi lainnya

Untuk mempelajari lebih lanjut cara menguji dan men-debug database Room, lihat referensi tambahan berikut:

Postingan blog

Video