এক নজরে ইউনিট পরীক্ষা

গ্ল্যান্স ইউনিট টেস্ট API আপনাকে ভিউ বাড়ানো বা UI স্বয়ংক্রিয় যন্ত্রের প্রয়োজন ছাড়াই আপনার গ্ল্যান্স কোড পরীক্ষা করতে দেয়। উদাহরণস্বরূপ, ইউনিট টেস্ট API আপনাকে শর্তগুলি যাচাই করতে দেয়, যেমন উপাদানগুলি তালিকায় আছে কিনা বা বাক্সগুলি চেক করা হয়েছে কিনা, hasContentDescriptionEqualTo বা isChecked এর মতো মিল ব্যবহার করে।

এই APIটি হালকা ওজনের এবং কম সেটআপের প্রয়োজন, তাই আপনি আপনার উইজেটের স্বতন্ত্র অংশগুলি বিকাশ করার সাথে সাথে কোড পুনঃব্যবহার উন্নত করার জন্য সেগুলিকে সংগঠিত করার সাথে সাথে আপনি পরীক্ষা চালিত বিকাশ করতে পারেন।

সেটআপ

ইউনিট টেস্ট লাইব্রেরি ব্যবহার করার জন্য প্রয়োজনীয় নির্ভরতা নিম্নলিখিত উদাহরণগুলিতে দেখানো হয়েছে:

// Other Glance and Compose runtime dependencies.
...
testImplementation 'androidx.glance:glance-testing:1.1.1'
testImplementation 'androidx.glance:glance-appwidget-testing:1.1.1'
...
// You may include additional dependencies, such as Robolectric, if your test
// needs to set a LocalContext.

পরীক্ষার কাঠামো

কোড পুনঃব্যবহার এবং ইউনিট পরীক্ষা সক্ষম করতে GlanceAppWidget ক্লাসের বাইরে কম্পোজযোগ্য ফাংশনগুলি সংগঠিত করুন। যতটা সম্ভব পরীক্ষার অধীনে আপনার ইউনিটগুলির জটিলতা হ্রাস করুন।

আপনি provideComposable সাথে কম্পোজেবল টেস্ট টার্গেট করতে পারেন এবং যথাক্রমে onNode বা onAllNodes সহ এক বা একাধিক গ্ল্যান্স নোডে আপনার ইউনিট পরীক্ষা চালাতে পারেন।

private const val FAKE_HEADLINE = "EXTRA! EXTRA! READ ALL ABOUT IT!"

class MyGlanceComposableTest {
    @Test
    fun myNewsItemComposable_largeSize_hasHeadline() = runGlanceAppWidgetUnitTest {
        // Set the composable to test
        provideComposable {
            MyNewsItemComposable(FAKE_HEADLINE)
        }

        // Perform assertions
        onNode(hasTestTag("headline"))
            .assertHasText(FAKE_HEADLINE)
    }


    @Composable
    fun MyNewsItemComposable(headline: String) {
        Row {
            Text(
                text = headline,
                modifier = GlanceModifier.semantics { testTag = "headline" },
            )
        }
    }
}

পরীক্ষার জন্য প্রসঙ্গ এবং আকার সেট করুন

যদি আপনার কম্পোজযোগ্য ফাংশন LocalContext.current() পদ্ধতি ব্যবহার করে প্রসঙ্গ পড়ে, তাহলে আপনাকে setContext() ব্যবহার করে একটি প্রসঙ্গ সেট করতে হবে। অন্যথায়, এই পদক্ষেপ ঐচ্ছিক।

প্রসঙ্গ প্রদান করতে আপনি যেকোন JVM-ভিত্তিক অ্যান্ড্রয়েড ইউনিট টেস্টিং ফ্রেমওয়ার্ক ব্যবহার করতে পারেন, যেমন রোবোলেট্রিক।

যদি আপনার কম্পোজেবল ফাংশন LocalSize অ্যাক্সেস করে, পরীক্ষায় একটি কম্পোজেবল প্রদান করার আগে পরীক্ষার জন্য নির্ধারিত আকার সেট করুন। ডিফল্ট আকার হল 349.dp x 455.dp, যা পোর্ট্রেট মোডে Pixel 4 ডিভাইসে দেখানো 5x4 উইজেটের সমতুল্য।

  • যদি আপনার AppWidget sizeMode == Single ব্যবহার করে, তাহলে আপনি এটিকে আপনার উইজেটের info.xml ফাইলে minWidth এবং minHeight এ সেট করতে পারেন।
  • যদি আপনার AppWidget sizeMode == Exact ব্যবহার করে, তাহলে আপনি আপনার উইজেটের জন্য একটি আকার নির্ধারণ করার জন্য এবং আপনার উইজেট প্রদর্শিত হতে পারে এমন ল্যান্ডস্কেপ এবং পোর্ট্রেট আকারগুলি সনাক্ত করতে এবং সেগুলির জন্য পরীক্ষা করতে আপনি একইভাবে পরীক্ষা করার জন্য আকারগুলি সনাক্ত করতে পারেন৷
  • যদি আপনার AppWidget sizeMode == Responsive ব্যবহার করে, তাহলে আপনি sizeMode নির্দিষ্ট করার সময় যে তালিকাটি প্রদান করেন তার একটিতে এটি সেট করতে পারেন।

একটি পরীক্ষার টাইমআউটের জন্য ডিফল্ট সময়কাল হল 1 সেকেন্ড, কিন্তু আপনার পরীক্ষার পরিকাঠামো যদি ভিন্ন টাইমআউট প্রয়োগ করে তাহলে আপনি runGlanceAppWidgetUnitTest পদ্ধতিতে একটি যুক্তি হিসাবে একটি কাস্টম সময়কাল পাস করতে পারেন৷

আরও তথ্য এবং কোড নমুনার জন্য, runGlanceAppWidgetUnitTest এর রেফারেন্স ডকুমেন্টেশন দেখুন।