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

API การทดสอบหน่วยข้อมูลโดยย่อช่วยให้คุณทดสอบโค้ดโดยย่อโดยไม่ต้องเพิ่มมุมมอง หรือต้องการเครื่องมือสร้าง UI อัตโนมัติ ตัวอย่างเช่น 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 เพื่อเปิดใช้ การใช้โค้ดซ้ำและการทดสอบ 1 หน่วย ลดความซับซ้อนของหน่วยที่อยู่ภายใต้การทดสอบเนื่องจาก ให้ได้มากที่สุด

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