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

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

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

ยอดดู

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

Codelab

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

ตัวอย่าง