การทดสอบ 1 หน่วยด้วยข้อมูลโดยย่อ

Glance Unit Test API ช่วยให้คุณทดสอบโค้ด Glance ได้โดยไม่ต้องเพิ่มจำนวนมุมมองหรือต้องใช้ UI Automator ตัวอย่างเช่น Unit Test API ช่วยให้คุณยืนยันเงื่อนไขต่างๆ ได้ เช่น องค์ประกอบอยู่ในรายการหรือไม่ หรือมีการเลือกช่องหรือไม่ โดยใช้ตัวจับคู่ เช่น hasContentDescriptionEqualTo หรือ isChecked

API นี้เบาและต้องการการตั้งค่าน้อยกว่า คุณจึงทําการพัฒนาแบบทดสอบเป็นแนวทางได้ขณะพัฒนาแต่ละส่วนประกอบของวิดเจ็ตและจัดระเบียบเพื่อปรับปรุงการนําโค้ดมาใช้ซ้ำ

ตั้งค่า

ทรัพยากร Dependency ที่จำเป็นสำหรับการใช้ไลบรารี ยูนิตเทสต์ จะแสดงอยู่ในตัวอย่างต่อไปนี้

// Other Glance and Compose runtime dependencies.
...
testImplementation 'androidx.glance:glance-testing:1.1.0'
testImplementation 'androidx.glance:glance-AppWidget-testing:1.1.0'
testImplementation 'org.robolectric:robolectric:4.11.1'
...
// You may include additional dependencies, such as Robolectric, if your test
// needs to set a LocalContext.

โครงสร้างการทดสอบ

จัดระเบียบฟังก์ชันที่ประกอบกันได้นอกคลาส GlanceAppWidget เพื่อเปิดใช้การใช้โค้ดซ้ำและการทดสอบหน่วย ลดความซับซ้อนของหน่วยทดสอบให้มากที่สุด

class MyGlanceComposableTest {
    @Test
    fun myNewsItemComposable_largeSize_hasAuthorAsSubtitle() = runGlanceAppWidgetUnitTest {
        // Prepare inputs and state
        setAppWidgetSize(100.dp, 100.dp)

        // Set the composable under test
        provideComposable {
            MyNewsItemComposable(TEST_NEWS_ITEM)
        }

        // Perform assertions
        onNode(hasTestTag("subTitle"))
            .assertHasText(TEST_NEWS_ITEM.authorName)
    }
}

ตั้งค่าบริบทและขนาดสําหรับการทดสอบ

หากฟังก์ชันคอมโพสิเบิลอ่านบริบทโดยใช้เมธอด LocalContext.current() คุณจะต้องตั้งค่าบริบทโดยใช้เมธอด LocalContext.current() ไม่เช่นนั้น คุณจะทำขั้นตอนนี้หรือไม่ก็ได้

คุณสามารถใช้เฟรมเวิร์กการทดสอบหน่วย Android ที่ใช้ JVM ใดก็ได้ เช่น Roboletric เพื่อระบุบริบท

หากฟังก์ชัน Composable เข้าถึง LocalSize ให้กำหนดขนาดที่ต้องการสำหรับการทดสอบก่อนที่จะระบุ Composable ในการทดสอบ ขนาดเริ่มต้นคือ 349.dp x 455.dp ซึ่งเทียบเท่ากับวิดเจ็ตขนาด 5x4 ที่แสดงในอุปกรณ์ Pixel 4 ในโหมดแนวตั้ง

  • หาก AppWidget ใช้ sizeMode == Single คุณสามารถตั้งค่าเป็น minWidth และ minHeight ในไฟล์ info.xml ของวิดเจ็ต
  • หาก AppWidget ใช้ sizeMode == Exact คุณจะระบุขนาดที่จะทดสอบได้โดยใช้วิธีคล้ายกับที่กำหนดขนาดวิดเจ็ต รวมถึงระบุขนาดแนวนอนและแนวตั้งที่วิดเจ็ตอาจปรากฏและทดสอบขนาดเหล่านั้น
  • หาก AppWidget ใช้ sizeMode == Responsive คุณตั้งค่าเป็นขนาดใดขนาดหนึ่งจากรายการที่ระบุเมื่อระบุ sizeMode

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

ดูข้อมูลเพิ่มเติมและตัวอย่างโค้ดได้ที่เอกสารอ้างอิงสำหรับ runGlanceAppWidgetUnitTest