Saat membuat database menggunakan library persistensi Room, Anda harus memverifikasi stabilitas database aplikasi dan data pengguna Anda. Halaman ini menjelaskan cara menguji database dan melakukan langkah-langkah proses debug untuk membantu kelulusan pengujian Anda.
Menguji database Anda
Ada dua cara untuk menguji database:
- Di perangkat yang menjalankan Android
- Di mesin pengembangan host
Untuk mengetahui informasi tentang pengujian yang dikhususkan bagi migrasi database, lihat Menguji Migrasi.
Menguji di perangkat yang menjalankan Android
Untuk menguji penerapan database, sebaiknya tulis pengujian JUnit yang berjalan di perangkat yang menjalankan Android. Karena pengujian ini tidak memerlukan aktivitas, pengujian ini berjalan lebih cepat daripada pengujian UI.
Saat menyiapkan pengujian, Anda harus membuat versi database dalam memori agar pengujian menjadi lebih terisolasi, seperti dalam contoh berikut:
import kotlinx.coroutines.test.runTest @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<TestDatabase>(context) .setDriver(BundledSQLiteDriver()) .build() userDao = db.userDao() } @After fun closeDb() { db.close() } @Test fun writeUserAndReadInList() = runTest { val user = User(3, "george") userDao.insert(user) val byName = userDao.findUsersByName("george") assertEquals(byName.single(), user) } }
Melakukan pengujian di mesin host (JVM)
Dengan Room KMP, Anda dapat menjalankan pengujian database di mesin pengembangan host menggunakan pengujian JUnit JVM lokal. Penyiapan ini memungkinkan pengujian Anda berjalan lebih cepat dengan menghilangkan overhead emulator atau perangkat Android.
Untuk membantu mempertahankan konsistensi, gunakan BundledSQLiteDriver. Driver ini mencakup SQLite yang dikompilasi dari sumber, yang menggunakan versi SQLite yang sama persis di mesin host, perangkat Android, dan perangkat iOS Anda. Penggunaan driver ini akan menghilangkan masalah ketidakcocokan versi.
Untuk menyiapkan pengujian JVM, konfigurasi BundledSQLiteDriver di builder database pengujian Anda:
val db = Room.inMemoryDatabaseBuilder<TestDatabase>() .setDriver(BundledSQLiteDriver()) .build()
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 Anda
Ada beberapa alat dan proses yang dapat digunakan untuk men-debug database.
Menggunakan Database Inspector
Di 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.
- Saat aplikasi yang sedang berjalan membuat perubahan pada data, Anda dapat langsung melihat info terbaru langsung di Database Inspector.
Untuk mengetahui informasi selengkapnya tentang Database Inspector, 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 mengetahui 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
- Database Inspector (11 Weeks of Android)