ทดสอบและแก้ไขข้อบกพร่องของฐานข้อมูล

เมื่อสร้างฐานข้อมูลโดยใช้ไลบรารี 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 ได้จากแหล่งข้อมูลเพิ่มเติมต่อไปนี้

บล็อกโพสต์

วิดีโอ