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

การยืนยันความเสถียรของฐานข้อมูลของแอปและของผู้ใช้เป็นสิ่งสำคัญ เมื่อสร้างฐานข้อมูลโดยใช้ ไลบรารีการคงอยู่ของห้อง หน้านี้ กล่าวถึงวิธีทดสอบฐานข้อมูล และดำเนินการขั้นตอนการดีบักเพื่อช่วย การทดสอบที่ผ่าน

ทดสอบฐานข้อมูล

มี 2 วิธีในการทดสอบฐานข้อมูล ได้แก่

  • ในอุปกรณ์ Android
  • ในเครื่องพัฒนาซอฟต์แวร์โฮสต์ (ไม่แนะนำ)

สำหรับข้อมูลเกี่ยวกับการทดสอบเฉพาะสำหรับการย้ายข้อมูลฐานข้อมูล โปรดดูที่ การย้ายข้อมูลการทดสอบ

ทดสอบในอุปกรณ์ Android

วิธีที่แนะนำสำหรับการทดสอบการใช้งานฐานข้อมูลคือการเขียน การทดสอบ JUnit ที่ทำงานในอุปกรณ์ Android เนื่องจากการทดสอบเหล่านี้ไม่ต้องใช้ การสร้างกิจกรรม การดำเนินการดังกล่าวควรที่จะรวดเร็วกว่าการทดสอบ UI ของคุณ

เมื่อตั้งค่าการทดสอบ คุณควรสร้างเวอร์ชันในหน่วยความจำของ ที่จะทำให้การทดสอบของคุณซับซ้อนมากขึ้น ดังที่ปรากฏในตัวอย่างต่อไปนี้:

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

ทดสอบในเครื่องโฮสต์

Room ใช้ไลบรารีการสนับสนุน SQLite ซึ่งมีอินเทอร์เฟซที่ตรงกับ ในคลาส Android Framework การสนับสนุนนี้จะช่วยให้คุณส่งผ่าน การใช้งานไลบรารีการสนับสนุนเพื่อทดสอบการค้นหาฐานข้อมูล

ทดสอบการย้ายข้อมูล

Room รองรับฐานข้อมูลที่เพิ่มขึ้น การย้ายข้อมูลเพื่อเก็บรักษา ข้อมูลแอปที่มีอยู่ในกรณีที่การอัปเดตแอปเปลี่ยนสคีมาของฐานข้อมูล อย่างไรก็ตาม การย้ายข้อมูลที่ระบุไม่ถูกต้องอาจทำให้แอปขัดข้องได้ สร้าง ตรวจสอบว่าคุณทดสอบฐานข้อมูลห้องแล้ว การย้ายข้อมูล

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

มีเครื่องมือและกระบวนการมากมายที่คุณใช้เพื่อแก้ไขข้อบกพร่องของฐานข้อมูลได้

ใช้เครื่องมือตรวจสอบฐานข้อมูล

ใน Android Studio 4.1 ขึ้นไป เครื่องมือตรวจสอบฐานข้อมูลช่วยให้คุณตรวจสอบ การค้นหา และแก้ไขฐานข้อมูลของแอปขณะที่แอปทำงานอยู่ ฐานข้อมูล เครื่องมือตรวจสอบใช้งานได้กับ SQLite เวอร์ชันที่มาพร้อมกับ Android และมีฟีเจอร์พิเศษสำหรับใช้กับห้อง

  • ใช้การทำงานของรางน้ำเพื่อเรียกใช้การค้นหาจาก 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

แหล่งข้อมูลเพิ่มเติม

หากต้องการดูข้อมูลเพิ่มเติมเกี่ยวกับการทดสอบและการแก้ไขข้อบกพร่องของฐานข้อมูลห้อง โปรดดูหัวข้อต่อไปนี้ แหล่งข้อมูลเพิ่มเติม

บล็อกโพสต์

วิดีโอ