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) } }
होस्ट मशीन (जेवीएम) पर टेस्ट करना
Room KMP की मदद से, होस्ट डेवलपमेंट मशीन पर डेटाबेस टेस्ट किए जा सकते हैं. इसके लिए, लोकल जेवीएम 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 के साथ इस्तेमाल करने के लिए खास सुविधाएं शामिल हैं:
- अपनी डीएओ क्लास से क्वेरी चलाने के लिए, गटर ऐक्शन का इस्तेमाल करें.
- जब आपका ऐप्लिकेशन डेटा में बदलाव करता है, तो आपको डेटाबेस इंस्पेक्टर में लाइव अपडेट तुरंत दिखते हैं.
डेटाबेस इंस्पेक्टर के बारे में ज़्यादा जानने के लिए, डेटाबेस इंस्पेक्टर की मदद से अपने डेटाबेस को डीबग करना लेख पढ़ें.
कमांड लाइन से डेटा डंप करना
Android SDK टूल में, sqlite3 डेटाबेस टूल शामिल होता है. इसका इस्तेमाल करके, अपने ऐप्लिकेशन के डेटाबेस की जांच की जा सकती है. इसमें टेबल के कॉन्टेंट को प्रिंट करने के लिए .dump और किसी मौजूदा टेबल के लिए SQL CREATE स्टेटमेंट को प्रिंट करने के लिए .schema जैसे कमांड शामिल हैं.
कमांड लाइन से भी SQLite कमांड को लागू किया जा सकता है. इसके लिए, यहां दिया गया स्निपेट देखें:
adb -s emulator-5554 shell sqlite3 /data/data/your-app-package/databases/rssitems.db
ज़्यादा जानकारी के लिए, SQLite की वेबसाइट पर उपलब्ध sqlite3 कमांड लाइन का दस्तावेज़ देखें.
अन्य संसाधन
अपने Room डेटाबेस की जांच करने और उसे डीबग करने के बारे में ज़्यादा जानने के लिए, यहां दिए गए अतिरिक्त संसाधन देखें:
ब्लॉग पोस्ट
वीडियो
- डेटाबेस जांचने वाला टूल (11 Weeks of Android)