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

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

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

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

  • على جهاز Android:
  • على جهاز التطوير المضيف (غير مُستحسَن)

للحصول على معلومات عن الاختبار الخاص بعمليات نقل قواعد البيانات، يُرجى الاطّلاع على اختبار عمليات نقل البيانات.

الاختبار على جهاز Android

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

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

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

الاختبار على الجهاز المضيف

تستخدم الغرفة مكتبة دعم SQLite، التي توفر واجهات تطابق تلك الموجودة في فئات إطار عمل Android. يسمح لك هذا الدعم باجتياز عمليات التنفيذ المخصّصة لمكتبة الدعم لاختبار استعلامات قاعدة البيانات.

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

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

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

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

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

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

  • استخدم إجراءات هامش التوثيق لتشغيل طلبات البحث بسرعة من فئات DAO.
  • سترى التحديثات المباشرة فورًا في Database Inspector (أداة فحص قاعدة البيانات) عندما يُجري تطبيقك قيد التشغيل تغييرات على البيانات.

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

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

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

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

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

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

مراجع إضافية

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

مشاركات المدونة

الفيديوهات الطويلة