ทดสอบเลย์เอาต์ของการเขียน

ทดสอบ UI ของแอปเพื่อยืนยันว่าลักษณะการทํางานของโค้ด Compose ถูกต้อง วิธีนี้จะช่วยให้คุณพบข้อผิดพลาดได้ตั้งแต่เนิ่นๆ และปรับปรุงคุณภาพของแอปได้

Compose มีชุด API การทดสอบเพื่อค้นหาองค์ประกอบ ยืนยันแอตทริบิวต์ และดำเนินการของผู้ใช้ นอกจากนี้ API ยังมีฟีเจอร์ขั้นสูง เช่น การควบคุมเวลา ใช้ API เหล่านี้เพื่อสร้างการทดสอบที่มีประสิทธิภาพซึ่งยืนยันลักษณะการทํางานของแอป

ยอดดู

หากคุณทํางานกับมุมมองแทนการเขียน ให้ดูส่วนทดสอบแอปใน Android ทั่วไป

โดยเฉพาะอย่างยิ่ง จุดที่ควรเริ่มต้นคือคู่มือการทดสอบ UI อัตโนมัติ โดยจะอธิบายวิธีทำให้การทดสอบที่ทำงานบนอุปกรณ์เป็นแบบอัตโนมัติ รวมถึงเมื่อใช้มุมมอง

หัวข้อสำคัญ

แนวคิดหลักในการทดสอบโค้ด Compose มีดังนี้

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

Codelab

ดูข้อมูลเพิ่มเติมได้ใน Codelab การทดสอบ Jetpack Compose

ตัวอย่าง