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