ทดสอบ UI ของแอปเพื่อยืนยันว่าลักษณะการทำงานของโค้ด Compose ถูกต้อง ซึ่งจะช่วยให้คุณพบข้อผิดพลาดได้ตั้งแต่เนิ่นๆ และปรับปรุงคุณภาพของแอปได้
Compose มีชุด API สำหรับการทดสอบเพื่อค้นหาองค์ประกอบ ยืนยันแอตทริบิวต์ และดำเนินการของผู้ใช้ นอกจากนี้ API ยังมีฟีเจอร์ขั้นสูง เช่น การจัดการเวลา ใช้ API เหล่านี้เพื่อสร้างการทดสอบท������������������������ึ่งจะยืนยัน ลักษณะการทำงานของแอป
ยอดดู
หากคุณใช้ View แทน Compose โปรดดูส่วนทดสอบแอปใน Android ทั่วไป
โดยเฉพาะอย่างยิ่ง จุดเริ่มต้นที่ดีคือคำแนะนำการทดสอบ UI อัตโนมัติ โดยจะอธิบายวิธีทำให้การทดสอบที่ทำงานในอุปกรณ์เป็นแบบอัตโนมัติ รวมถึงเมื่อใช้ มุมมอง
หัวข้อสำคัญ
แนวคิดสำคัญบางส่วนสำหรับการทดสอบโค้ด Compose มีดังนี้
- Semantics: Semantics จะให้ความหมายแก่ UI ซึ่งช่วยให้การทดสอบ โต้ตอบกับองค์ประกอบที่เฉพาะเจาะจงได้
- API การทดสอบ: API การทดสอบช่วยให้คุณค้นหาองค์ประกอบ ยืนยันแอตทริบิวต์ และดำเนินการของผู้ใช้ได้
- การซิงโครไนซ์: การซิงโครไนซ์จะตรวจสอบว่าการทดสอบรอให้ UI ไม่มีการใช้งานก่อนที่จะดำเนินการหรือทำการยืนยัน
- ความสามารถในการทำงานร่วมกัน: ความสามารถในการทำงานร่วมกันช่วยให้การทดสอบทำงานได้กับทั้งองค์ประกอบที่อิงตาม Compose และ View ในแอปเดียวกัน
ชีตโกงสำหรับการทดสอบ
ดูชีตโกงการทดสอบเพื่อดูภาพรวมของหัวข้อสำคัญทั้งหมดที่คุณควร เ��ียนรู้เกี่ยวกับการทดสอบใน Compose
ตั้งค่า
ตั้งค่าแอปเพื่อให้คุณทดสอบโค้ด Compose ได้
ก่อนอื่น ให้เพิ่มทรัพยากร Dependency ต่อไปนี้ลงในไฟล์ 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 คุณสามารถตั้งค่าการเขียน
เนื้อหาหรือเข้าถึงกิจกรรมผ่านกฎนี้ได้ คุณสร้างกฎโดยใช้ฟังก์ชัน Factory
ไม่ว่าจะเป็น createComposeRule หรือหากต้องการเข้าถึงกิจกรรม
createAndroidComposeRule การทดสอบ UI ทั่วไปสำหรับ Compose มีลักษณะดังนี้
// 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: แม้ว่า Espresso จะออกแบบมาสำหรับ UI ที่อิงตาม View แต่ความรู้เกี่ยวกับ Espresso ก็ยังเป็นประโยชน์สำหรับบางแง่มุมของการทดสอบ Compose
Codelab
ดูข้อมูลเพิ่มเติมได้ที่ Codelab การทดสอบ Jetpack Compose
ตัวอย่าง
แนะนำสำหรับคุณ
- หมายเหตุ: ข้อความลิงก์จะแสดงเมื่อ JavaScript ปิดอยู่
- ความหมายในฟีเจอร์ช่วยเขียน
- ส่วนที่เว้นไว้ในหน้าต่างใน Compose
- ข้อควรพิจารณาอื่นๆ