เมื่อสร้างฐานข้อมูลโดยใช้ไลบรารี Room Persistence คุณควรตรวจสอบความเสถียรของฐานข้อมูลของแอปและข้อมูลของผู้ใช้ หน้านี้อธิบายวิธีทดสอบฐานข้อมูลและทำตามขั้นตอนการแก้ไขข้อบกพร่องเพื่อช่วยให้การทดสอบผ่าน
ทดสอบฐานข้อมูล
คุณทดสอบฐานข้อมูลได้ 2 วิธี ดังนี้
- ในอุปกรณ์ที่ใช้ Android
- ในคอมพิวเตอร์สำหรับการพัฒนาซอฟต์แวร์โฮสต์ของคุณ
ดูข้อมูลเกี่ยวกับการทดสอบที่เฉพาะเจาะจงสำหรับการย้ายข้อมูลฐานข้อมูลได้ที่หัวข้อ การทดสอบการย้ายข้อมูล
ทดสอบในอุปกรณ์ที่ใช้ Android
เราขอแนะนำให้คุณเขียนการทดสอบ JUnit ที่ทำงานในอุปกรณ์ที่ใช้ Android เพื่อทดสอบการใช้งานฐานข้อมูล เนื่องจากการทดสอบเหล่านี้ไม่จำเป็นต้องมีกิจกรรม จึงทำงานได้เร็วกว่าการทดสอบ UI
เมื่อตั้งค่าการทดสอบ คุณควรสร้างฐานข้อมูลเวอร์ชันในหน่วยความจำเพื่อให้การทดสอบมีความเป็นอิสระมากขึ้น ดังที่แสดงในตัวอย่างต่อไปนี้
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) } }
ทดสอบในเครื่องโฮสต์ (JVM)
Room KMP ช่วยให้คุณทำการทดสอบฐานข้อมูลในคอมพิวเตอร์สำหรับการพัฒนาซอฟต์แวร์ได้โดยใช้การทดสอบ JUnit JVM ในเครื่อง การตั้งค่านี้ช่วยให้การทดสอบทำงานได้เร็วขึ้นโดยลดค่าใช้จ่ายของโปรแกรมจำลอง Android หรืออุปกรณ์
ใช้ BundledSQLiteDriver เพื่อช่วยรักษาความสอดคล้อง ไดรเวอร์นี้มี SQLite ที่คอมไพล์จากแหล่งที่มา ซึ่งใช้ SQLite เวอร์ชันเดียวกันกับในเครื่องโฮสต์ อุปกรณ์ Android และอุปกรณ์ iOS การใช้ไดรเวอร์นี้จะช่วยแก้ปัญหาเวอร์ชันไม่ตรงกัน
หากต้องการตั้งค่าการทดสอบ JVM ให้กำหนดค่า BundledSQLiteDriver ในตัวสร้างฐานข้อมูลทดสอบ
val db = Room.inMemoryDatabaseBuilder<TestDatabase>() .setDriver(BundledSQLiteDriver()) .build()
ทดสอบการย้ายข้อมูล
Room รองรับการย้ายข้อมูลฐานข้อมูลแบบเพิ่มทีละรายการเพื่อเก็บข้อมูลแอปที่มีอยู่ไว้ ในกรณีที่การอัปเดตแอปมีการเปลี่ยนแปลงสคีมาของฐานข้อมูล อย่างไรก็ตาม การย้ายข้อมูลที่กำหนดไม่ถูกต้องอาจทำให้แอปขัดข้อง โปรดตรวจสอบว่าคุณได้ทดสอบการย้ายข้อมูลฐานข้อมูล Room แล้ว
แก้ไขข้อบกพร่องของฐานข้อมูล
มีเครื่องมือและกระบวนการหลายอย่างที่คุณใช้เพื่อแก้ไขข้อบกพร่องของฐานข้อมูลได้
ใช้เครื่องมือตรวจสอบฐานข้อมูล
ใน Android Studio 4.1 ขึ้นไป เครื่องมือตรวจสอบฐานข้อมูลช่วยให้คุณตรวจสอบ ค้นหา และแก้ไขฐานข้อมูลของแอปขณะที่แอปทำงานอยู่ เครื่องมือตรวจสอบฐานข้อมูลเข้ากันได้กับ SQLite เวอร์ชันที่มาพร้อมกับ Android และมีฟีเจอร์พิเศษสำหรับใช้กับ Room ดังนี้
- ใช้การดำเนินการใน Gutter เพื่อเรียกใช้การค้นหาจากคลาส 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
แหล่งข้อมูลเพิ่มเติม
ดูข้อมูลเพิ่มเติมเกี่ยวกับการทดสอบและการแก้ไขข้อบกพร่องของฐานข้อมูล Room ได้จากแหล่งข้อมูลเพิ่มเติมต่อไปนี้
บล็อกโพสต์
วิดีโอ
- เครื่องมือตรวจสอบฐานข้อมูล (11 สัปดาห์ของ Android)