ทดสอบ UI ของแอปเพื่อยืนยันว่าลักษณะการทํางานของโค้ด Compose ถูกต้อง วิธีนี้จะช่วยให้คุณพบข้อผิดพลาดได้ตั้งแต่เนิ่นๆ และปรับปรุงคุณภาพของแอปได้
Compose มีชุด API การทดสอบเพื่อค้นหาองค์ประกอบ ยืนยันแอตทริบิวต์ และดำเนินการของผู้ใช้ นอกจากนี้ API ยังมีฟีเจอร์ขั้นสูง เช่น การจัดการเวลา ใช้ API เหล่านี้เพื่อสร้างการทดสอบที่มีประสิทธิภาพซึ่งยืนยันลักษณะการทํางานของแอป
ยอดดู
หากคุณทํางานกับมุมมองแทนการเขียน ให้ดูส่วนทดสอบแอปใน Android ทั่วไป
โดยเฉพาะอย่างยิ่ง คำแนะนำการทดสอบ UI อัตโนมัติถือเป็นจุดเริ่มต้นที่ดี โดยจะอธิบายวิธีทำให้การทดสอบที่ทำงานบนอุปกรณ์เป็นแบบอัตโนมัติ รวมถึงเมื่อใช้มุมมอง
หัวข้อสำคัญ
แนวคิดสําคัญสําหรับการทดสอบโค้ด Compose มีดังนี้
- ความหมาย: การทดสอบการคอมโพสิชันโต้ตอบกับ UI โดยใช้ความหมาย ซึ่งจะระบุความหมายของชิ้นส่วน UI และสร้างขึ้นพร้อมกับลําดับชั้น UI
- การทดสอบ API: Compose มี API การทดสอบสําหรับการค้นหาองค์ประกอบ การยืนยันสถานะและพร็อพเพอร์ตี้ขององค์ประกอบ รวมไปถึงการดําเนินการเพื่อจําลองการโต้ตอบของผู้ใช้
- การซิงค์: โดยค่าเริ่มต้น การทดสอบการเขียนจะซิงค์กับ UI โดยอัตโนมัติ โดยจะรอให้ UI ว่างเปล่าก่อนทำการยืนยันหรือดำเนินการ
- ความสามารถในการทำงานร่วมกัน: ในแอปไฮบริด การทดสอบสามารถโต้ตอบกับทั้งองค์ประกอบ Compose และองค์ประกอบแบบ View ได้อย่างราบรื่น รวมถึงผสานรวมกับเฟรมเวิร์กการทดสอบอื่นๆ
เคล็ดลับการทดสอบ
ดูเคล็ดลับการทดสอบเพื่อดูภาพรวมของหัวข้อสำคัญทั้งหมดที่ควรทราบเกี่ยวกับการทดสอบใน Compose
ตั้งค่า
ตั้งค่าแอปเพื่อให้คุณทดสอบโค้ดคอมโพสิทได้
ก่อนอื่น ให้เพิ่มการพึ่งพาต่อไปนี้ลงในไฟล์ build.gradle
ของโมดูลที่มีชุดทดสอบ UI
// Test rules and transitive dependencies:
androidTestImplementation("androidx.compose.ui:ui-test-junit4:$compose_version")
// Needed for createComposeRule(), but not for createAndroidComposeRule<YourActivity>():
debugImplementation("androidx.compose.ui:ui-test-manifest:$compose_version")
โมดูลนี้มี ComposeTestRule
และการใช้งานสําหรับ Android ที่ชื่อ AndroidComposeTestRule
กฎนี้ช่วยให้คุณตั้งค่าการเขียนเนื้อหาหรือเข้าถึงกิจกรรมได้ คุณสร้างกฎโดยใช้ฟังก์ชันการสร้าง createComposeRule
หรือcreateAndroidComposeRule
หากต้องการเข้าถึงกิจกรรม การทดสอบ UI ทั่วไปสำหรับเครื่องมือเขียนอีเมลจะมีลักษณะดังนี้
// file: app/src/androidTest/java/com/package/MyComposeTest.kt
class MyComposeTest {
@get:Rule val composeTestRule = createComposeRule()
// use createAndroidComposeRule<YourActivity>() if you need access to
// an activity
@Test
fun myTest() {
// Start the app
composeTestRule.setContent {
MyAppTheme {
MainScreen(uiState = fakeUiState, /*...*/)
}
}
composeTestRule.onNodeWithText("Continue").performClick()
composeTestRule.onNodeWithText("Welcome").assertIsDisplayed()
}
}
แหล่งข้อมูลเพิ่มเติม
- ทดสอบแอปใน Android: หน้า Landing Page หลักของการทดสอบ Android ให้มุมมองที่กว้างขึ้นเกี่ยวกับพื้นฐานและเทคนิคการทดสอบ
- หลักพื้นฐานของการทดสอบ: ดูข้อมูลเพิ่มเติมเกี่ยวกับแนวคิดหลักเบื้องหลังการทดสอบแอป Android
- การทดสอบในเครื่อง: คุณสามารถทำการทดสอบบางอย่างในเครื่องของคุณเอง
- การทดสอบที่มีเครื่องควบคุม: คุณควรเรียกใช้การทดสอบที่มีเครื่องควบคุมด้วย กล่าวคือ การทดสอบที่ทํางานในอุปกรณ์โดยตรง
- การรวมอย่างต่อเนื่อง: การรวมอย่างต่อเนื่องช่วยให้คุณผสานรวมการทดสอบเข้ากับไปป์ไลน์การนำส่งได้
- ทดสอบขนาดหน้าจอต่างๆ: เนื่องจากผู้ใช้มีอุปกรณ์หลายรุ่น คุณจึงควรทดสอบขนาดหน้าจอต่างๆ
- Espresso: แม้ว่าจะมีไว้สำหรับ UI ที่อิงตามมุมมอง แต่ความรู้เกี่ยวกับ Espresso ยังคงมีประโยชน์สำหรับบางแง่มุมของการทดสอบ Compose
Codelab
ดูข้อมูลเพิ่มเติมได้ใน Codelab การทดสอบ Jetpack Compose
ตัวอย่าง
แนะนำสำหรับคุณ
- หมายเหตุ: ข้อความลิงก์จะแสดงเมื่อ JavaScript ปิดอยู่
- ความหมายในเครื่องมือเขียน
- ส่วนที่เว้นไว้ในหน้าต่างในเครื่องมือเขียน
- ข้อควรพิจารณาอื่นๆ