আপনার ডাটাবেস পরীক্ষা এবং ডিবাগ করুন

রুম পারসিস্টেন্স লাইব্রেরি ব্যবহার করে ডেটাবেস তৈরি করার সময় আপনার অ্যাপের ডাটাবেসের স্থায়িত্ব এবং আপনার ব্যবহারকারীদের ডেটা যাচাই করা গুরুত্বপূর্ণ। এই পৃষ্ঠাটি আলোচনা করে যে কিভাবে আপনার ডাটাবেস পরীক্ষা করা যায় এবং আপনার পরীক্ষাগুলি পাস করতে সাহায্য করার জন্য ডিবাগিং পদক্ষেপগুলি সম্পাদন করা যায়।

আপনার ডাটাবেস পরীক্ষা করুন

আপনার ডাটাবেস পরীক্ষা করার 2 টি উপায় আছে:

  • একটি অ্যান্ড্রয়েড ডিভাইসে।
  • আপনার হোস্ট ডেভেলপমেন্ট মেশিনে (প্রস্তাবিত নয়)।

ডাটাবেস মাইগ্রেশনের জন্য নির্দিষ্ট পরীক্ষার বিষয়ে তথ্যের জন্য, টেস্টিং মাইগ্রেশন দেখুন।

একটি অ্যান্ড্রয়েড ডিভাইসে পরীক্ষা করুন

আপনার ডাটাবেস বাস্তবায়ন পরীক্ষা করার জন্য প্রস্তাবিত পদ্ধতি হল একটি JUnit পরীক্ষা লেখা যা একটি Android ডিভাইসে চলে। যেহেতু এই পরীক্ষাগুলির জন্য কোনও কার্যকলাপ তৈরি করার প্রয়োজন নেই, সেগুলি আপনার 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));
    }
}

আপনার হোস্ট মেশিনে পরীক্ষা করুন

রুম SQLite সাপোর্ট লাইব্রেরি ব্যবহার করে, যা Android ফ্রেমওয়ার্ক ক্লাসের সাথে মেলে এমন ইন্টারফেস প্রদান করে। এই সমর্থন আপনাকে আপনার ডাটাবেস প্রশ্নগুলি পরীক্ষা করার জন্য সমর্থন লাইব্রেরির কাস্টম বাস্তবায়ন পাস করতে দেয়।

আপনার মাইগ্রেশন পরীক্ষা করুন

একটি অ্যাপ আপডেট ডাটাবেস স্কিমা পরিবর্তন করে এমন পরিস্থিতিতে বিদ্যমান অ্যাপ ডেটা ধরে রাখতে রুম ক্রমবর্ধমান ডেটাবেস মাইগ্রেশন সমর্থন করে। যাইহোক, একটি ভুলভাবে সংজ্ঞায়িত মাইগ্রেশন আপনার অ্যাপ ক্র্যাশ হতে পারে। নিশ্চিত করুন যে আপনি আপনার রুম ডাটাবেস মাইগ্রেশন পরীক্ষা করছেন

আপনার ডাটাবেস ডিবাগ করুন

আপনার ডাটাবেস ডিবাগ করতে আপনি ব্যবহার করতে পারেন এমন বেশ কয়েকটি সরঞ্জাম এবং প্রক্রিয়া রয়েছে।

ডাটাবেস ইন্সপেক্টর ব্যবহার করুন

অ্যান্ড্রয়েড স্টুডিও 4.1 এবং উচ্চতর সংস্করণে, ডেটাবেস ইন্সপেক্টর আপনাকে আপনার অ্যাপ চলাকালীন আপনার অ্যাপের ডাটাবেসগুলি পরিদর্শন, অনুসন্ধান এবং সংশোধন করার অনুমতি দেয়। ডেটাবেস ইন্সপেক্টর SQLite এর সংস্করণের সাথে সামঞ্জস্যপূর্ণ যেটি Android এর সাথে একত্রিত এবং রুম এর সাথে ব্যবহারের জন্য বিশেষ বৈশিষ্ট্যগুলি অন্তর্ভুক্ত করে:

  • আপনার DAO ক্লাস থেকে দ্রুত কোয়েরি চালানোর জন্য গটার অ্যাকশন ব্যবহার করুন।
  • যখন আপনার চলমান অ্যাপ ডেটাতে পরিবর্তন করে তখনই ডাটাবেস ইন্সপেক্টরে লাইভ আপডেটগুলি দেখুন।

ডাটাবেস ইন্সপেক্টর সম্পর্কে আরও জানতে, ডাটাবেস ইন্সপেক্টর দিয়ে আপনার ডাটাবেস ডিবাগ করুন দেখুন।

কমান্ড লাইন থেকে ডাম্প ডাম্প

আপনার অ্যাপের ডেটাবেস পরীক্ষা করার জন্য Android SDK-এ একটি sqlite3 ডাটাবেস টুল রয়েছে। এটিতে একটি টেবিলের বিষয়বস্তু প্রিন্ট করার জন্য .schema এবং বিদ্যমান টেবিলের জন্য SQL CREATE স্টেটমেন্ট প্রিন্ট করার জন্য .dump এর মতো কমান্ড অন্তর্ভুক্ত রয়েছে।

আপনি কমান্ড লাইন থেকে SQLite কমান্ডগুলিও চালাতে পারেন, যেমনটি নিম্নলিখিত স্নিপেটে দেখানো হয়েছে:

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

আরও তথ্যের জন্য, SQLite ওয়েবসাইটে উপলব্ধ sqlite3 কমান্ড লাইন ডকুমেন্টেশন দেখুন।

অতিরিক্ত সম্পদ

আপনার রুম ডাটাবেস পরীক্ষা এবং ডিবাগ করার বিষয়ে আরও জানতে, নিম্নলিখিত অতিরিক্ত সংস্থানগুলি দেখুন:

ব্লগ পোস্ট

ভিডিও