Room পারসিস্টেন্স লাইব্রেরি ব্যবহার করে ডেটাবেস তৈরি করলে, আপনাকে অ্যাপের ডেটাবেস ও ব্যবহারকারীর ডেটার স্থিতিশীলতা যাচাই করতে হবে। এই পৃষ্ঠায় আপনার ডেটাবেস কীভাবে পরীক্ষা করবেন এবং আপনার টেস্ট পাস করানোর জন্য ডিবাগিং ধাপগুলি কীভাবে পারফর্ম করবেন তা বর্ণনা করা হয়েছে।
আপনার ডেটাবেস পরীক্ষা করুন
আপনার ডেটাবেস পরীক্ষা করার দুটি উপায় আছে:
- Android চালিত ডিভাইসে
- আপনার হোস্ট ডেভেলপমেন্ট মেশিনে
ডেটাবেস মাইগ্রেশনের জন্য নির্দিষ্ট পরীক্ষার বিষয়ে তথ্য পেতে, মাইগ্রেশন পরীক্ষা করা দেখুন।
Android-এ চলে এমন ডিভাইসে পরীক্ষা করা
আপনার ডেটাবেস প্রয়োগ করা হয়েছে কিনা তা পরীক্ষা করে দেখতে, আমরা সাজেস্ট করি যে আপনি একটি JUnit টেস্ট লিখুন যা Android চালিত ডিভাইসে রান করে। এইসব টেস্টে কোনও অ্যাক্টিভিটির প্রয়োজন হয় না বলে, UI টেস্টের চেয়ে দ্রুত রান করে।
আপনার টেস্ট সেট-আপ করার সময়, আপনার টেস্ট আরও হার্মেটিক করে তুলতে, আপনাকে নিজের ডেটাবেসের একটি ইন-মেমরি ভার্সন তৈরি করতে হবে, যেমনটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে:
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 অন্তর্ভুক্ত করে, যা আপনার হোস্ট মেশিন, Android ডিভাইস এবং iOS ডিভাইসে
SQLite-এর ঠিক একই ভার্সন ব্যবহার করে। এই ড্রাইভার ব্যবহার করলে
ভার্সন ম্যাচ না হওয়া সংক্রান্ত সমস্যা এড়ানো যায়।
JVM টেস্ট সেট-আপ করতে, আপনার টেস্ট ডেটাবেসের BundledSQLiteDriver কনফিগার করুন
বিল্ডার:
val db = Room.inMemoryDatabaseBuilder<TestDatabase>() .setDriver(BundledSQLiteDriver()) .build()
আপনার মাইগ্রেশন পরীক্ষা করুন
অ্যাপ আপডেট করার ফলে ডেটাবেস স্কিমা পরিবর্তন হলে, আগে থেকে থাকা অ্যাপ ডেটা রিটেন করার জন্য Room ইনক্রিমেন্টাল ডেটাবেস মাইগ্রেশন সাপোর্ট করে। তবে, ভুলভাবে মাইগ্রেশন নির্ধারণ করা হলে আপনার অ্যাপ ক্র্যাশ করতে পারে। আপনি Room ডেটাবেস মাইগ্রেশন পরীক্ষা করছেন কিনা তা নিশ্চিত করুন।
আপনার ডেটাবেস ডিবাগ করা
আপনার ডেটাবেস ডিবাগ করার জন্য আপনি বিভিন্ন টুল ও প্রসেস ব্যবহার করতে পারেন।
ডেটাবেস ইন্সপেক্টর ব্যবহার করা
Android Studio 4.1 ও এর পরের যেকোনও ভার্সনে, আপনার অ্যাপ চলাকালীন Database Inspector আপনাকে অ্যাপের ডেটাবেস পরিদর্শন, কোয়েরি ও পরিবর্তন করতে দেয়। Database Inspector, Android-এর সাথে বান্ডেল করা SQLite-এর ভার্সনের সাথে মানানসই এবং এতে Room-এর সাথে ব্যবহার করার জন্য বিশেষ ফিচার অন্তর্ভুক্ত থাকে:
- আপনার DAO ক্লাস থেকে কোয়েরি রান করাতে গটার অ্যাকশন ব্যবহার করুন।
- আপনার রানিং অ্যাপ ডেটাতে পরিবর্তন করলে, আপনি সঙ্গে সঙ্গে Database Inspector-এ লাইভ আপডেট দেখতে পাবেন।
Database Inspector সম্পর্কে আরও জানতে, Database Inspector-এর সাহায্যে আপনার ডেটাবেস ডিবাগ করুন দেখুন।
কমান্ড লাইন থেকে ডেটা ডাম্প করা
Android SDK-তে আপনার অ্যাপের
ডেটাবেস পরীক্ষা করার জন্য একটি sqlite3 ডেটাবেস টুল অন্তর্ভুক্ত থাকে। এতে .dump-এর মতো কমান্ড অন্তর্ভুক্ত থাকে যা কোনও টেবিলের কন্টেন্ট প্রিন্ট করে এবং .schema-এর মতো কমান্ড অন্তর্ভুক্ত থাকে যা আগে থেকে থাকা টেবিলের জন্য SQL CREATE স্টেটমেন্ট প্রিন্ট করে।
এছাড়াও, আপনি কমান্ড লাইন থেকে SQLite কমান্ড এক্সিকিউট করতে পারবেন, যেমনটি নিম্নলিখিত স্নিপেটে দেখানো হয়েছে:
adb -s emulator-5554 shell sqlite3 /data/data/your-app-package/databases/rssitems.db
আরও তথ্যের জন্য, SQLite
ওয়েবসাইটে উপলভ্য
sqlite3 কমান্ড লাইন ডকুমেন্টেশন দেখুন।
অতিরিক্ত রিসোর্স
আপনার Room ডেটাবেস পরীক্ষা ও ডিবাগ করা সম্পর্কে আরও জানতে, নিম্নলিখিত অতিরিক্ত রিসোর্স দেখুন:
ব্লগ পোস্ট
ভিডিও
- ডেটাবেস ইন্সপেক্টর (১১ সপ্তাহ ধরে Android)