ความสามารถในการแลกเปลี่ยนข้อมูล

Compose ผสานรวมกับเฟรมเวิร์กการทดสอบทั่วไป

ความสามารถในการทำงานร่วมกันกับ Espresso

ในแอปแบบผสม คุณจะเห็นคอมโพเนนต์ Compose ภายในลําดับชั้นของมุมมองและมุมมองภายในคอมโพสิชัน Compose (ผ่านคอมโพสิชัน AndroidView)

คุณไม่จำเป็นต้องทำขั้นตอนพิเศษใดๆ เพื่อจับคู่รายการประเภทใดประเภทหนึ่ง คุณจับคู่มุมมองกับ onView ของ Espresso และองค์ประกอบการเขียนด้วย 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

โดยค่าเริ่มต้น คุณจะเข้าถึง Composable จาก 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) จะเข้าถึงได้โดยใช้ By.res(resourceName) โดยใช้ tag เดียวกับ resourceName

val device = UiDevice.getInstance(getInstrumentation())

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

แหล่งข้อมูลเพิ่มเติม

  • ทดสอบแอปใน Android: หน้า Landing Page หลักของการทดสอบ Android ให้มุมมองที่กว้างขึ้นเกี่ยวกับพื้นฐานและเทคนิคการทดสอบ
  • หลักพื้นฐานของการทดสอบ: ดูข้อมูลเพิ่มเติมเกี่ยวกับแนวคิดหลักเบื้องหลังการทดสอบแอป Android
  • การทดสอบในเครื่อง: คุณสามารถทำการทดสอบบางอย่างในเครื่องของคุณเอง
  • การทดสอบที่มีเครื่องมือวัด: คุณควรเรียกใช้การทดสอบที่มีเครื่องมือวัดด้วย กล่าวคือ การทดสอบที่ทํางานในอุปกรณ์โดยตรง
  • การรวมอย่างต่อเนื่อง: การรวมอย่างต่อเนื่องช่วยให้คุณผสานรวมการทดสอบเข้ากับไปป์ไลน์การนำส่งได้
  • ทดสอบหน้าจอขนาดต่างๆ: เนื่องจากผู้ใช้มีอุปกรณ์หลากหลายรุ่น คุณจึงควรทดสอบหน้าจอขนาดต่างๆ
  • Espresso: แม้ว่าจะมีไว้สำหรับ UI ที่อิงตามมุมมอง แต่ความรู้เกี่ยวกับ Espresso ยังคงมีประโยชน์สำหรับบางแง่มุมของการทดสอบ Compose