Glance Unit Test API ช่วยให้คุณทดสอบโค้ด Glance ได้โดยไม่ต้องขยายมุมมองหรือใช้ UI Automator ตัวอย่างเช่น Unit Test API ช่วยให้คุณตรวจสอบเงื่อนไขต่างๆ ได้ เช่น องค์ประกอบอยู่ในรายการหรือไม่ หรือมีการเลือกช่องหรือไม่ โดยใช้ Matcher เช่น hasContentDescriptionEqualTo หรือ isChecked
API นี้มีขนาดเล็กและต้องมีการตั้งค่าน้อยกว่า คุณจึงสามารถพัฒนาแบบทดสอบเป็นตัวขับเคลื่อนไปพร้อมๆ กับการพัฒนาส่วนต่างๆ ของวิดเจ็ตและจัดระเบียบส่วนเหล่านั้นเพื่อปรับปรุงการนำโค้ดกลับมาใช้ซ้ำ
ตั้งค่า
การพึ่งพาที่จำเป็นในการใช้ไลบรารี Unit Test จะแสดงในตัวอย่างต่อไปนี้
// 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.
โครงสร้างการทดสอบ
จัดระเบียบฟังก์ชัน Composables นอกคลาส GlanceAppWidget เพื่อให้สามารถนำโค้ดกลับมาใช้ซ้ำและทำการทดสอบหน่วยได้ ลดความซับซ้อนของหน่วยที่อยู่ระหว่างการทดสอบให้มากที่สุด
คุณสามารถกำหนดเป้าหมาย Composable ที่จะทดสอบด้วย provideComposable และเรียกใช้ Unit Test ในโหนด 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