اختبار قاعدة البيانات وتصحيح الأخطاء

عند إنشاء قواعد بيانات باستخدام مكتبة Room لاستدامة البيانات، عليك التأكّد من ثبات قاعدة بيانات تطبيقك وبيانات المستخدمين. توضّح هذه الصفحة كيفية اختبار قاعدة البيانات وتنفيذ خطوات تصحيح الأخطاء للمساعدة في اجتياز الاختبارات.

اختبار قاعدة البيانات

هناك طريقتان لاختبار قاعدة البيانات:

  • على جهاز يعمل بنظام التشغيل Android
  • على جهاز التطوير المضيف

للحصول على معلومات حول الاختبارات الخاصة بعمليات نقل البيانات من قاعدة بيانات إلى أخرى، اطّلِع على اختبار عمليات نقل البيانات.

الاختبار على جهاز يعمل بنظام التشغيل Android

لاختبار تنفيذ قاعدة البيانات، ننصحك بكتابة اختبار JUnit يتم تشغيله على جهاز يعمل بنظام التشغيل Android. وبما أنّ هذه الاختبارات لا تتطلّب نشاطًا، فإنّها تعمل بشكل أسرع من اختبارات واجهة المستخدم.

عند إعداد الاختبارات، عليك إنشاء نسخة في الذاكرة من قاعدة البيانات لجعل الاختبارات أكثر إحكامًا، كما هو موضّح في المثال التالي:

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

الاختبار على الجهاز المضيف (آلة جافا الافتراضية)

باستخدام Room KMP، يمكنك إجراء اختبارات قاعدة البيانات على جهاز التطوير المضيف باستخدام اختبارات JUnit المحلية لآلة جافا الافتراضية (JVM). يتيح هذا الإعداد تشغيل اختباراتك بشكل أسرع من خلال إلغاء النفقات العامة لمحاكي Android أو الجهاز.

للمساعدة في الحفاظ على الاتساق، استخدِم BundledSQLiteDriver. يتضمّن برنامج التشغيل هذا SQLite مجمَّعًا من المصدر، ويستخدم الإصدار نفسه من SQLite على الجهاز المضيف وأجهزة Android وأجهزة iOS. يؤدي استخدام برنامج التشغيل هذا إلى تجنُّب مشاكل عدم تطابق الإصدارات.

لإعداد اختبارات JVM، اضبط BundledSQLiteDriver في أداة إنشاء قاعدة بيانات الاختبار:

val db = Room.inMemoryDatabaseBuilder<TestDatabase>()
    .setDriver(BundledSQLiteDriver())
    .build()

اختبار عمليات نقل البيانات

تتيح مكتبة Room عمليات نقل قواعد البيانات التزايدية للاحتفاظ ببيانات التطبيق الحالية في الحالات التي يؤدي فيها تحديث التطبيق إلى تغيير مخطط قاعدة البيانات. ومع ذلك، قد يؤدي تعريف عملية نقل البيانات بشكل غير صحيح إلى تعطُّل تطبيقك. احرص على اختبار عمليات نقل بيانات قاعدة بيانات Room.

تصحيح الأخطاء في قاعدة البيانات

تتوفّر العديد من الأدوات والعمليات التي يمكنك استخدامها لتصحيح أخطاء قاعدة البيانات.

استخدام "أداة فحص قواعد البيانات"

في "استوديو Android" 4.1 والإصدارات الأحدث، يتيح لك "أداة فحص قاعدة البيانات" فحص قواعد بيانات تطبيقك والاستعلام عنها وتعديلها أثناء تشغيل تطبيقك. يتوافق "فاحص قاعدة البيانات" مع إصدار SQLite المضمّن في Android، ويتضمّن ميزات خاصة للاستخدام مع Room:

  • استخدِم إجراءات الحاشية لتنفيذ طلبات بحث من فئات DAO.
  • عندما يجري تطبيقك الذي يتم تشغيله تغييرات على البيانات، يمكنك الاطّلاع على التعديلات المباشرة على الفور في &quot;أداة فحص قاعدة البيانات&quot;.

لمزيد من المعلومات حول "أداة فحص قاعدة البيانات"، راجِع مقالة تصحيح أخطاء قاعدة البيانات باستخدام "أداة فحص قاعدة البيانات".

تفريغ البيانات من سطر الأوامر

تتضمّن حزمة تطوير البرامج لنظام التشغيل Android أداة sqlite3 لقاعدة البيانات تتيح فحص قواعد بيانات تطبيقك. ويتضمّن هذا الملف أوامر مثل .dump لطباعة محتويات جدول، و.schema لطباعة عبارة SQL CREATE لجدول حالي.

يمكنك أيضًا تنفيذ أوامر SQLite من سطر الأوامر، كما هو موضّح في المقتطف التالي:

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

لمزيد من المعلومات، يُرجى الاطّلاع على مستندات سطر الأوامر الخاصة بأداة sqlite3 المتوفّرة على موقع SQLite الإلكتروني.

مراجع إضافية

لمزيد من المعلومات حول اختبار قاعدة بيانات Room وتصحيح أخطائها، يُرجى الاطّلاع على المراجع الإضافية التالية:

منشورات المدوّنات

الفيديوهات