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

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

Codelab

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

ตัวอย่าง