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'
...
// You may include additional dependencies, such as Robolectric, if your test
// needs to set a LocalContext.
โครงสร้างการทดสอบ
จัดระเบียบฟังก์ชันที่ใช้ร่วมกันได้นอกคลาส GlanceAppWidget
เพื่อให้สามารถ
นำโค้ดกลับมาใช้ใหม่และทดสอบหน่วยได้ ลดความซับซ้อนของหน่วยภายใต้การทดสอบให้มากที่สุด
คุณกำหนดเป้าหมาย Composable ทดสอบด้วย provideComposable
และเรียกใช้การทดสอบหน่วยในโหนด Glance อย่างน้อย 1 รายการด้วย onNode
หรือ onAllNodes
ตามลำดับได้
private const val FAKE_HEADLINE = "EXTRA! EXTRA! READ ALL ABOUT IT!" class MyGlanceComposableTest { @Test fun myNewsItemComposable_largeSize_hasHeadline() = runGlanceAppWidgetUnitTest { // Set the composable to test provideComposable { MyNewsItemComposable(FAKE_HEADLINE) } // Perform assertions onNode(hasTestTag("headline")) .assertHasText(FAKE_HEADLINE) } @Composable fun MyNewsItemComposable(headline: String) { Row { Text( text = headline, modifier = GlanceModifier.semantics { testTag = "headline" }, ) } } }
กำหนดบริบทและขนาดสำหรับการทดสอบ
หากฟังก์ชันที่ใช้ร่วมกันได้อ่านบริบทโดยใช้เมธอด 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