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() ไม่เช่นนั้น ขั้นตอนนี้จะ
ไม่บังคับ
คุณสามารถใช้เฟรมเวิร์กการทำ Unit Test ของ Android ที่อิงตาม JVM เช่น Robolectric เพื่อระบุบริบทได้
หากฟังก์ชันที่ประกอบกันได้เข้าถึง 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