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

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

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

ยอดดู

หากคุณใช้ View แทน Compose โปรดดูส่วนทดสอบแอปใน Android ทั่วไป

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

หัวข้อสำคัญ

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

  • Semantics: Semantics จะให้ความหมายแก่ UI ของคุณ ซึ่งช่วยให้การทดสอบโต้ตอบกับองค์ประกอบที่เฉพาะเจาะจงได้
  • Testing API: Testing 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

ดูข้อมูลเพิ่มเติมได้ที่โค้ดแล็บการทดสอบ Jetpack Compose

ตัวอย่าง