การทดสอบ
จัดทุกอย่างให้เป็นระเบียบอยู่เสมอด้วยคอลเล็กชัน
บันทึกและจัดหมวดหมู่เนื้อหาตามค่ากำหนดของคุณ
วิธีสําคัญในการทดสอบการช่วยเหลือพิเศษคือการทดสอบด้วยตนเอง ซึ่งทำได้โดยการเปิดบริการการช่วยเหลือพิเศษ เช่น TalkBack หรือการเข้าถึงด้วยสวิตช์ และตรวจสอบว่าทุกอย่างทํางานตามที่คาดไว้หรือไม่ ข้อมูลนี้ให้ข้อมูลเชิงลึกโดยตรงเกี่ยวกับประสบการณ์การใช้งานแอปพลิเคชันของผู้ที่มีความต้องการด้านการช่วยเหลือพิเศษ
นอกเหนือจากการยืนยันด้วยตนเองแล้ว คุณควรใช้การทดสอบอัตโนมัติเพื่อแจ้งปัญหาที่อาจเกิดขึ้นซึ่งอาจส่งผลต่อประสบการณ์ของผู้ใช้ขณะที่คุณทําการเปลี่ยนแปลงแอปอย่างต่อเนื่อง
Compose Testing API ที่มีอยู่ช่วยให้คุณเขียนการทดสอบอัตโนมัติที่โต้ตอบกับองค์ประกอบเชิงความหมายและยืนยันพร็อพเพอร์ตี้ที่กําหนดไว้ใน UI ได้
การตรวจสอบการช่วยเหลือพิเศษ
สําหรับการทดสอบการช่วยเหลือพิเศษอัตโนมัติ คุณยังใช้เฟรมเวิร์กการทดสอบการช่วยเหลือพิเศษ ซึ่งเป็นเฟรมเวิร์กพื้นฐานเดียวกับที่ขับเคลื่อนเครื่องมือสแกนและการตรวจสอบการช่วยเหลือพิเศษใน Espresso ได้ด้วย เพื่อดําเนินการตรวจสอบที่เกี่ยวข้องกับการช่วยเหลือพิเศษบางอย่างโดยอัตโนมัติ โดยเริ่มตั้งแต่ Compose 1.8.0
หากต้องการเปิดใช้การตรวจสอบ ให้เพิ่ม ui-test-junit4-accessibility
Dependency,
เรียกใช้ enableAccessibilityChecks()
ใน AndroidComposeTestRule
,
และเรียกใช้การดำเนินการหรือ tryPerformAccessibilityChecks
@Rule
@JvmField
val composeTestRule = createAndroidComposeRule<ComponentActivity>()
@Test
fun noAccessibilityLabel() {
composeTestRule.setContent {
Box(
modifier = Modifier
.size(50.dp, 50.dp)
.background(color = Color.Gray)
.clickable { }
.semantics {
contentDescription = ""
}
)
}
composeTestRule.enableAccessibilityChecks()
// Any action (such as performClick) will perform accessibility checks too:
composeTestRule.onRoot().tryPerformAccessibilityChecks()
}
การทดสอบที่เฉพาะเจาะจงนี้ดำเนินการไม่สำเร็จโดยมีข้อยกเว้นและข้อความระบุว่ารายการอาจไม่มีป้ายกำกับที่บริการการช่วยเหลือพิเศษอ่านได้
การตรวจสอบอื่นๆ ที่มีให้จะตรวจหาปัญหาการช่วยเหลือพิเศษเกี่ยวกับคอนทราสต์ของสี ขนาดเป้าหมายการสัมผัสขนาดเล็ก หรือลําดับการไปยังส่วนต่างๆ ขององค์ประกอบ
หากคุณใช้ทั้งมุมมองและคอมโพซและกำลังใช้ AccessibilityValidator
อยู่แล้ว หรือต้องการกําหนดค่า AccessibilityValidator
ให้ตั้งค่าในกฎ ดังนี้
@Test
fun lowContrastScreen() {
composeTestRule.setContent {
Box(
modifier = Modifier
.fillMaxSize()
.background(color = Color(0xFFFAFBFC)),
contentAlignment = Alignment.Center
) {
Text(text = "Hello", color = Color(0xFFB0B1B2))
}
}
// Optionally, set AccessibilityValidator manually
val accessibilityValidator = AccessibilityValidator()
.setThrowExceptionFor(
AccessibilityCheckResult.AccessibilityCheckResultType.WARNING
)
composeTestRule.enableAccessibilityChecks(accessibilityValidator)
composeTestRule.onRoot().tryPerformAccessibilityChecks()
}
การทดสอบอัตโนมัติโดยใช้ทั้ง Compose API และเฟรมเวิร์กการทดสอบการช่วยเหลือพิเศษร่วมกับการทดสอบด้วยตนเองจะช่วยให้คุณตรวจพบปัญหาที่อาจเกิดขึ้นได้ตั้งแต่เนิ่นๆ ในกระบวนการพัฒนา
แนะนำสำหรับคุณ
ตัวอย่างเนื้อหาและโค้ดในหน้าเว็บนี้ขึ้นอยู่กับใบอนุญาตที่อธิบายไว้ในใบอนุญาตการใช้เนื้อหา Java และ OpenJDK เป็นเครื่องหมายการค้าหรือเครื่องหมายการค้าจดทะเบียนของ Oracle และ/หรือบริษัทในเครือ
อัปเดตล่าสุด 2025-08-28 UTC
[[["เข้าใจง่าย","easyToUnderstand","thumb-up"],["แก้ปัญหาของฉันได้","solvedMyProblem","thumb-up"],["อื่นๆ","otherUp","thumb-up"]],[["ไม่มีข้อมูลที่ฉันต้องการ","missingTheInformationINeed","thumb-down"],["ซับซ้อนเกินไป/มีหลายขั้นตอนมากเกินไป","tooComplicatedTooManySteps","thumb-down"],["ล้าสมัย","outOfDate","thumb-down"],["ปัญหาเกี่ยวกับการแปล","translationIssue","thumb-down"],["ตัวอย่าง/ปัญหาเกี่ยวกับโค้ด","samplesCodeIssue","thumb-down"],["อื่นๆ","otherDown","thumb-down"]],["อัปเดตล่าสุด 2025-08-28 UTC"],[],[],null,["An essential way of testing accessibility is a form of manual testing: by\nturning accessibility services, like TalkBack or Switch Access, on, and checking\nif everything works as expected. This provides direct insight into how users\nwith accessibility needs might experience your application.\n\nIn conjunction with manual verification, you should also use automated testing\nto flag any potential issues that could impact user experience as you make\ncontinual changes to your app.\n\n[Existing Compose testing APIs](/develop/ui/compose/testing) allow you to write automated tests that\ninteract with semantic elements and to [assert the properties](/develop/ui/compose/testing/apis#assertions) defined in\nyour UI.\n\nAccessibility checks\n\nFor automated accessibility testing, you can also use the\n[Accessibility Test Framework](https://github.com/google/Accessibility-Test-Framework-for-Android)---the same underlying framework that powers\nAccessibility Scanner and accessibility checks in Espresso---to perform some\naccessibility-related checks automatically, starting with Compose 1.8.0.\n\nTo enable the checks, add the `ui-test-junit4-accessibility` dependency,\ncall [`enableAccessibilityChecks()`](/reference/kotlin/androidx/compose/ui/test/ComposeUiTest#(androidx.compose.ui.test.ComposeUiTest).enableAccessibilityChecks(com.google.android.apps.common.testing.accessibility.framework.integrations.espresso.AccessibilityValidator)) in the [`AndroidComposeTestRule`](/reference/kotlin/androidx/compose/ui/test/junit4/AndroidComposeTestRule),\nand trigger an action or [`tryPerformAccessibilityChecks`](https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:compose/ui/ui-test/src/androidMain/kotlin/androidx/compose/ui/test/Actions.android.kt;drc=808c430f1ac6028d33902e3d685720f2b96f7aee;l=27):\n\n\n```kotlin\n@Rule\n@JvmField\nval composeTestRule = createAndroidComposeRule\u003cComponentActivity\u003e()\n\n@Test\nfun noAccessibilityLabel() {\n composeTestRule.setContent {\n Box(\n modifier = Modifier\n .size(50.dp, 50.dp)\n .background(color = Color.Gray)\n .clickable { }\n .semantics {\n contentDescription = \"\"\n }\n )\n }\n\n composeTestRule.enableAccessibilityChecks()\n\n // Any action (such as performClick) will perform accessibility checks too:\n composeTestRule.onRoot().tryPerformAccessibilityChecks()\n}https://github.com/android/snippets/blob/dd30aee903e8c247786c064faab1a9ca8d10b46e/compose/snippets/src/androidTest/java/com/example/compose/snippets/accessibility/AccessibilitySnippets.kt#L49-L71\n```\n\n\u003cbr /\u003e\n\nThis specific test fails with an exception and a message that the item may not\nhave a label readable by accessibility services.\n\nOther available checks look for accessibility issues with color contrast,\nsmall touch target size, or elements' traversal order.\n\nIf you're mixing Views with Compose and you're already using an\n`AccessibilityValidator`, or you need to configure one, you can set it in the\nrule:\n\n\n```kotlin\n@Test\nfun lowContrastScreen() {\n composeTestRule.setContent {\n Box(\n modifier = Modifier\n .fillMaxSize()\n .background(color = Color(0xFFFAFBFC)),\n contentAlignment = Alignment.Center\n ) {\n Text(text = \"Hello\", color = Color(0xFFB0B1B2))\n }\n }\n\n // Optionally, set AccessibilityValidator manually\n val accessibilityValidator = AccessibilityValidator()\n .setThrowExceptionFor(\n AccessibilityCheckResult.AccessibilityCheckResultType.WARNING\n )\n\n composeTestRule.enableAccessibilityChecks(accessibilityValidator)\n\n composeTestRule.onRoot().tryPerformAccessibilityChecks()\n}https://github.com/android/snippets/blob/dd30aee903e8c247786c064faab1a9ca8d10b46e/compose/snippets/src/androidTest/java/com/example/compose/snippets/accessibility/AccessibilitySnippets.kt#L94-L116\n```\n\n\u003cbr /\u003e\n\nIn combination with manual testing, automated tests using both Compose APIs as\nwell as the Accessibility Test Framework can help you detect possible problems\nearly on in the development process.\n\nRecommended for you\n\n- Note: link text is displayed when JavaScript is off\n- [Accessibility in Compose](/develop/ui/compose/testing)\n- \\[Material Design 2 in Compose\\]\\[19\\]\n- [Testing your Compose layout](/develop/ui/compose/testing/apis#assertions)"]]