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.
โครงสร้างการทดสอบ
จัดระเบียบฟังก์ชันที่ประกอบกันได้ นอกคลาส GlanceAppWidget เพื่อให้สามารถนำโค้ดกลับมาใช้ซ้ำและทำการทำ Unit Test ได้ ลดความซับซ้อนของหน่วยที่อยู่ระหว่างการทดสอบให้มากที่สุด
คุณสามารถกำหนดเป้าหมาย 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 เช่น 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