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 เพื่อระบุบริบทได้
หากฟังก์ชันคอมโพสิเบิลเข้าถึง 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