وقتی بااستفاده از کتابخانه ماندگاری 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) } }
آزمایش در ماشین میزبان (JVM)
با Room KMP، میتوانید آزمایشهای پایگاه داده را در ماشین توسعه میزبان خود بااستفاده از آزمایشهای محلی JVM JUnit اجرا کنید. این راهاندازی با ازبین بردن سربار شبیهساز یا دستگاه Android، به آزمایشهایتان اجازه میدهد سریعتر اجرا شوند.
برای کمک به حفظ یکپارچگی، از BundledSQLiteDriver استفاده کنید. این درایور
شامل SQLite کامپایلشده از منبع است که از همان نسخه
SQLite در ماشین میزبان، دستگاههای Android، و دستگاههای iOS استفاده میکند. استفاده از این درایور
مشکلات عدم تطابق نسخه را برطرف میکند.
برای راهاندازی آزمایشهای ماشین مجازی جاوا، BundledSQLiteDriver را در پایگاه داده آزمایشی خود پیکربندی کنید
سازنده:
val db = Room.inMemoryDatabaseBuilder<TestDatabase>() .setDriver(BundledSQLiteDriver()) .build()
آزمایش کردن انتقالها
Room از انتقالهای تدریجی پایگاه داده برای حفظ دادههای برنامه موجود در شرایطی که بهروزرسانی برنامه طرح پایگاه داده را تغییر میدهد پشتیبانی میکند. بااینحال، انتقال تعریفشده نادرست میتواند باعث ازکارافتادن برنامهتان شود. مطمئن شوید که انتقالهای پایگاه داده Room را آزمایش میکنید.
اشکالزدایی پایگاه داده
چندین ابزار و فرایند وجود دارد که میتوانید از آنها برای اشکالزدایی پایگاه دادهتان استفاده کنید.
استفاده از «بازرس پایگاه داده»
در Android Studio نسخه ۴.۱ و بالاتر، «بازرس پایگاه داده» به شما امکان میدهد پایگاههای داده برنامهتان را درحین اجرای برنامه بازرسی، پُرسمان، و اصلاح کنید. «بازرس پایگاه داده» با نسخه SQLite که همراه Android ارائه میشود سازگار است و شامل ویژگیهای ویژهای برای استفاده با Room است:
- از کنشهای کنار صفحه برای اجرای پُرسمانها از کلاسهای DAO استفاده کنید.
- وقتی برنامه درحال اجرا تغییراتی در دادهها ایجاد میکند، میتوانید بهروزرسانیهای زنده را بلافاصله در «بازرس پایگاه داده» ببینید.
برای کسب اطلاعات بیشتر درباره «بازرس پایگاه داده»، به عیبیابی پایگاه داده با «بازرس پایگاه داده» مراجعه کنید.
دادههای تخلیه از خط فرمان
«کیت توسعه نرمافزار Android» شامل ابزار پایگاه داده sqlite3 برای بررسی پایگاههای داده برنامه شما است. این شامل دستوراتی مثل .dump برای چاپ محتوای جدول و .schema برای چاپ بیانیه SQL CREATE برای جدول موجود است.
همچنین میتوانید فرمانهای SQLite را از خط فرمان اجرا کنید، همانطور که در تکه کد زیر نشان داده شده است:
adb -s emulator-5554 shell sqlite3 /data/data/your-app-package/databases/rssitems.db
برای اطلاعات بیشتر،
مستندات خط فرمان sqlite3 را که در وبسایت SQLite
دردسترس است ببینید.
منابع بیشتر
برای کسب اطلاعات بیشتر درباره آزمایش و اشکالزدایی پایگاه داده Room، منابع تکمیلی زیر را ببینید:
پستهای وبلاگ
ویدیوها
- بازرس پایگاه داده (۱۱ هفته Android)