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

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

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

ตั้งค่า

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

// Other Glance and Compose runtime dependencies.
...
testImplementation 'androidx.glance:glance-testing:1.1.1'
testImplementation 'androidx.glance:glance-appwidget-testing:1.1.1'
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() คุณต้องตั้งค่าบริบทโดยใช้ setContext() ไม่เช่นนั้น ขั้นตอนนี้จะเป็นแบบ ไม่บังคับ

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

หากฟังก์ชันที่ใช้ร่วมกันได้เข้าถึง LocalSize ให้ตั้งค่าขนาดที่ต้องการ สำหรับการทดสอบก่อนที่จะระบุฟังก์ชันที่ใช้ร่วมกันได้ในการทดสอบ ขนาดเริ่มต้นคือ 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