測試無障礙功能的必要方式是採用人工測試:開啟 TalkBack 或切換控制等無障礙服務,然後檢查所有功能是否正常運作。這可讓您直接瞭解有無障礙需求的使用者如何體驗應用程式。
除了手動驗證之外,您還應使用自動化測試,在持續變更應用程式時標示任何可能影響使用者體驗的潛在問題。
現有的 Compose 測試 API 可讓您編寫自動化測試,與語意元素互動,並斷言 UI 中定義的屬性。
無障礙檢查
如要進行自動化無障礙程度測試,您也可以使用無障礙功能測試架構 (與 Espresso 中的無障礙功能檢查工具和無障礙功能檢查所使用的相同基礎架構),自動執行一些與無障礙相關的檢查作業,從 Compose 1.8.0 開始。
如要啟用檢查功能,請新增 ui-test-junit4-accessibility dependency
、在 AndroidComposeTestRule
中呼叫 enableAccessibilityChecks()
,並觸發動作或 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() }
這項特定測試失敗,並顯示例外狀況和訊息,指出項目可能沒有無障礙服務可讀取的標籤。
其他可用的檢查項目會檢查色彩對比、觸控目標尺寸太小或元素的檢查順序等無障礙問題。
如果您將 View 與 Compose 混合使用,且已使用 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 和無障礙功能測試架構的自動化測試,可協助您在開發過程的早期偵測可能的問題。
為您推薦
- 注意:系統會在 JavaScript 關閉時顯示連結文字
- Compose 中的無障礙功能
- [Compose 中的 Material Design 2][19]
- 測試 Compose 版面配置