通过测试无障碍功能,您可以从整个用户群(包括具有无障碍功能需求的用户)的角度体验应用。这种形式的测试让您有机会提升应用的实用性和灵活性。
本文介绍了如何为您的现有 Espresso 测试添加无障碍功能检查。如需详细了解无障碍功能,请参阅无障碍功能指南。
启用检查
您可以使用 AccessibilityChecks
类启用和配置无障碍功能测试。
Kotlin
import androidx.test.espresso.contrib.AccessibilityChecks @RunWith(AndroidJUnit4::class) @LargeTest class MyWelcomeWorkflowIntegrationTest { companion object { @Before @JvmStatic fun enableAccessibilityChecks() { AccessibilityChecks.enable() } } }
Java
import androidx.test.espresso.contrib.AccessibilityChecks; @RunWith(AndroidJUnit4.class) @LargeTest public class MyWelcomeWorkflowIntegrationTest { @Before public static void enableAccessibilityChecks() { AccessibilityChecks.enable(); } }
默认情况下,系统会在您执行 ViewActions
中定义的任何视图操作时运行检查。每次检查均包括执行操作的视图以及所有子级视图。您可以通过将 true
传递到 setRunChecksFromRootView()
评估每次检查期间屏幕的整个视图层次结构,如以下代码段所示:
Kotlin
AccessibilityChecks.enable().setRunChecksFromRootView(true)
Java
AccessibilityChecks.enable().setRunChecksFromRootView(true);
抑制结果的子集
Espresso 针对您的应用运行无障碍功能检查后,您可能会发现一些能够改善应用无障碍功能的机会,但您无法立即着手解决。为了防止 Espresso 测试因这些结果而不断失败,您可以暂时忽略它们。无障碍功能测试框架 (ATF) 使用 setSuppressingResultMatcher()
方法提供此功能,该方法指示 Espresso 抑制满足给定匹配器表达式的所有结果。
如果您对应用进行的更改可以改善无障碍功能的一个方面,Espresso 将会尽可能多地显示无障碍功能其他方面的结果。因此,最好仅抑制已知的具体改善机会。
如果您暂时抑制无障碍功能测试发现结果并计划稍后处理,请务必小心谨慎,不要意外抑制类似发现结果。考虑到这点,请使用范围较小的匹配器。为此,请选择一个匹配器,以便 Espresso 仅在某个给定结果满足以下每项无障碍功能检查时才会抑制该结果:
- 特定类型的无障碍功能检查,例如检查触摸目标大小的无障碍功能检查。
- 用于评估特定界面元素(例如按钮)的无障碍功能检查。
ATF 定义了多个匹配器,以帮助您定义要在 Espresso 测试中显示的结果。以下示例抑制了与单个 TextView
元素的色彩对比度相关的检查的结果。元素的 ID 为 countTV
。
Kotlin
AccessibilityChecks.enable().apply { setSuppressingResultMatcher( allOf( matchesCheckNames(`is`("TextContrastViewCheck")), matchesViews(withId(R.id.countTV)) ) ) }
Java
AccessibilityValidator myChecksValidator = AccessibilityChecks.enable(); Matcher<? super AccessibilityViewCheckResult> myChecksMatcher = Matchers.allOf(matchesCheckNames(is("TextContrastViewCheck")), matchesViews(withId(R.id.countTV))); myChecksValidator.setSuppressingResultMatcher(myChecksMatcher);