دیتابیس خود را تست و اشکال زدایی کنید

هنگام ایجاد پایگاه‌های داده با استفاده از کتابخانه ماندگاری اتاق، تأیید پایداری پایگاه داده برنامه و داده‌های کاربرانتان مهم است. در این صفحه نحوه آزمایش پایگاه داده و انجام مراحل اشکال زدایی برای کمک به گذراندن آزمون ها مورد بحث قرار می گیرد.

پایگاه داده خود را تست کنید

2 راه برای تست پایگاه داده شما وجود دارد:

  • در دستگاه اندروید.
  • در دستگاه توسعه میزبان شما (توصیه نمی شود).

برای اطلاعات در مورد آزمایشی که مختص انتقال پایگاه داده است، به آزمایش مهاجرت مراجعه کنید.

تست روی دستگاه اندرویدی

روش توصیه شده برای آزمایش پیاده سازی پایگاه داده شما، نوشتن یک تست JUnit است که روی دستگاه اندرویدی اجرا می شود. از آنجایی که این تست‌ها نیازی به ایجاد یک فعالیت ندارند، باید سریع‌تر از تست‌های UI شما اجرا شوند.

همانطور که در مثال زیر نشان داده شده است، هنگام تنظیم تست‌های خود، باید یک نسخه درون حافظه از پایگاه داده خود ایجاد کنید تا تست‌های شما هرمتیک‌تر شود:

کاتلین

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

جاوا

@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 مطابقت دارند. این پشتیبانی به شما این امکان را می دهد که پیاده سازی های سفارشی کتابخانه پشتیبانی را برای آزمایش پرس و جوهای پایگاه داده خود ارسال کنید.

مهاجرت های خود را آزمایش کنید

اتاق از انتقال تدریجی پایگاه داده پشتیبانی می‌کند تا داده‌های برنامه موجود را در شرایطی که به‌روزرسانی برنامه، طرح پایگاه داده را تغییر می‌دهد، حفظ کند. با این حال، انتقال نادرست تعریف شده می تواند باعث از کار افتادن برنامه شما شود. مطمئن شوید که مهاجرت های پایگاه داده اتاق خود را آزمایش کرده اید.

دیتابیس خود را دیباگ کنید

چندین ابزار و فرآیند وجود دارد که می توانید برای دیباگ کردن پایگاه داده خود از آنها استفاده کنید.

از Database Inspector استفاده کنید

در Android Studio نسخه 4.1 و بالاتر، بازرس پایگاه داده به شما اجازه می‌دهد تا پایگاه داده‌های برنامه خود را در حین اجرا بررسی، جستجو و اصلاح کنید. بازرس پایگاه داده با نسخه SQLite که با Android همراه است سازگار است و دارای ویژگی های ویژه برای استفاده با Room است:

  • از عملکردهای ناودانی برای اجرای سریع پرس و جوها از کلاس های DAO خود استفاده کنید.
  • هنگامی که برنامه در حال اجرا شما تغییراتی در داده‌ها ایجاد می‌کند، فوراً به‌روزرسانی‌های زنده را در Database Inspector مشاهده کنید.

برای کسب اطلاعات بیشتر در مورد بازرس پایگاه داده، به اشکال زدایی پایگاه داده خود با بازرس پایگاه داده مراجعه کنید.

داده ها را از خط فرمان تخلیه کنید

Android SDK شامل یک ابزار پایگاه داده sqlite3 برای بررسی پایگاه داده های برنامه شما است. این شامل دستوراتی مانند .dump برای چاپ محتویات یک جدول و .schema برای چاپ دستور SQL CREATE برای یک جدول موجود است.

همانطور که در قطعه زیر نشان داده شده است، می توانید دستورات SQLite را از خط فرمان نیز اجرا کنید:

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

برای اطلاعات بیشتر، به مستندات خط فرمان sqlite3 که در وب سایت SQLite موجود است، مراجعه کنید.

منابع اضافی

برای کسب اطلاعات بیشتر در مورد آزمایش و اشکال زدایی پایگاه داده اتاق خود، به منابع اضافی زیر مراجعه کنید:

پست های وبلاگ

ویدیوها