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

Compose จะผสานรวมกับกรอบการทดสอบทั่วไป

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

ในแอปแบบผสม คุณสามารถค้นหาคอมโพเนนต์ Compose ภายในลำดับชั้นการแสดงผลและ มุมมองภายใน Compose Composable (ผ่าน AndroidView ที่ Composable)

คุณไม่จำเป็นต้องมีขั้นตอนพิเศษเพื่อจับคู่ประเภททั้งสอง คุณจับคู่การดูกับ เอลิเมนต์ onView ของ Espresso และ Compose ด้วย 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 โดย ข้อบ่งชี้ที่สะดวก (ข้อความที่แสดง คำอธิบายเนื้อหา ฯลฯ) หากคุณต้องการ หากต้องการเข้าถึง Composable ที่ใช้ Modifier.testTag คุณต้องเปิดใช้ คุณสมบัติเชิงความหมาย testTagsAsResourceId สำหรับ Composable ที่เฉพาะเจาะจง แผนผังย่อย การเปิดใช้ลักษณะการทำงานนี้จะมีประโยชน์ต่อ Composable ที่ไม่มีส่วนใด แฮนเดิลอื่นๆ ที่ไม่ซ้ำกัน เช่น Composable ที่เลื่อนได้ (เช่น LazyColumn)

เปิดใช้พร็อพเพอร์ตี้เชิงความหมายเพียงครั้งเดียวในลำดับชั้น Composable ขั้นสูงเพื่อ ตรวจสอบว่า Composable ที่ซ้อนกันที่มี 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
    }
}

คำสั่ง Composable กับ 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: การทดสอบหลักของ Android หน้า Landing Page ให้มุมมองที่กว้างขึ้นเกี่ยวกับพื้นฐานและเทคนิคของการทดสอบ
  • พื้นฐานการทดสอบ: ดูข้อมูลเพิ่มเติม เกี่ยวกับแนวคิดหลักเบื้องหลังการทดสอบแอป Android
  • การทดสอบในเครื่อง: คุณทำการทดสอบได้บางรายการ ภายในเวิร์กสเตชันของคุณเอง
  • การทดสอบแบบมีเครื่องวัด: ดี เพื่อทำการทดสอบแบบมีเครื่องวัดด้วย กล่าวคือ การทดสอบที่ทำงานโดยตรง ในอุปกรณ์
  • การผสานรวมอย่างต่อเนื่อง: การผสานรวมอย่างต่อเนื่องช่วยให้คุณผสานรวมการทดสอบเข้ากับการติดตั้งใช้งานได้ ไปป์ไลน์
  • ทดสอบหน้าจอขนาดต่างๆ: ด้วย มีอุปกรณ์มากมายที่ผู้ใช้มี คุณควรทดสอบสำหรับหน้าจอแบบต่างๆ ขนาดต่างๆ
  • Espresso: เหมาะสำหรับข้อมูลในมุมมอง UI, ความรู้เกี่ยวกับ Espresso ยังมีประโยชน์สำหรับ Compose ในบางแง่มุม การทดสอบ