ইন্টারঅপারেবিলিটি

কম্পোজ সাধারণ পরীক্ষার কাঠামোর সাথে একীভূত হয়।

এসপ্রেসোর সাথে ইন্টারঅপারেবিলিটি

একটি হাইব্রিড অ্যাপে, আপনি কম্পোজ কম্পোজেবল ( AndroidView কম্পোজেবলের মাধ্যমে) ভিউ হায়ারার্কির ভিতরে কম্পোজ কম্পোনেন্ট এবং কম্পোজ কম্পোজেবলের ভিউ খুঁজে পেতে পারেন।

উভয় প্রকারের সাথে মিল করার জন্য কোন বিশেষ পদক্ষেপের প্রয়োজন নেই। আপনি Espresso এর onView এর সাথে ভিউ এবং ComposeTestRule এর সাথে কম্পোজ এলিমেন্টের সাথে মিল রাখেন।

@Test
fun androidViewInteropTest() {
    // Check the initial state of a TextView that depends on a Compose state.
    Espresso.onView(withText("Hello Views")).check(matches(isDisplayed()))
    // Click on the Compose button that changes the state.
    composeTestRule.onNodeWithText("Click here").performClick()
    // Check the new value.
    Espresso.onView(withText("Hello Compose")).check(matches(isDisplayed()))
}

UiAutomator এর সাথে ইন্টারঅপারেবিলিটি

ডিফল্টরূপে, কম্পোজেবলগুলি শুধুমাত্র তাদের সুবিধাজনক বর্ণনাকারী (প্রদর্শিত পাঠ্য, বিষয়বস্তুর বিবরণ ইত্যাদি) দ্বারা UiAutomator থেকে অ্যাক্সেসযোগ্য। আপনি যদি Modifier.testTag ব্যবহার করে এমন কোনো কম্পোজেবল অ্যাক্সেস করতে চান, তাহলে আপনাকে নির্দিষ্ট কম্পোজেবলের সাবট্রির জন্য শব্দার্থিক সম্পত্তি testTagsAsResourceId সক্ষম করতে হবে। এই আচরণটি সক্ষম করা কম্পোজেবলগুলির জন্য দরকারী যেগুলির অন্য কোনও অনন্য হ্যান্ডেল নেই, যেমন স্ক্রোলযোগ্য কম্পোজেবল (উদাহরণস্বরূপ, LazyColumn )।

Modifier.testTag এর সাথে সমস্ত নেস্টেড কম্পোজেবল UiAutomator থেকে অ্যাক্সেসযোগ্য তা নিশ্চিত করতে আপনার কম্পোজেবল অনুক্রমের উচ্চতায় শুধুমাত্র একবার শব্দার্থিক সম্পত্তি সক্ষম করুন।

Scaffold(
    // Enables for all composables in the hierarchy.
    modifier = Modifier.semantics {
        testTagsAsResourceId = true
    }
){
    // Modifier.testTag is accessible from UiAutomator for composables nested here.
    LazyColumn(
        modifier = Modifier.testTag("myLazyColumn")
    ){
        // Content
    }
}

Modifier.testTag(tag) এর সাথে যেকোনও কম্পোজ করা যাবে resourceName মতো একই tag ব্যবহার করে By.res(resourceName) ব্যবহার করে অ্যাক্সেসযোগ্য।

val device = UiDevice.getInstance(getInstrumentation())

val lazyColumn: UiObject2 = device.findObject(By.res("myLazyColumn"))
// Some interaction with the lazyColumn.

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