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