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