无障碍功能检查

测试无障碍功能可让您从整个用户群(包括有无障碍需求的用户)的角度体验您的应用。这种形式的测试可以发现使您的应用更强大、功能更丰富的机会。

本页面介绍了如何将无障碍功能检查添加到您现有的 Espresso 测试中。有关无障碍功能的更多信息,请参阅无障碍功能指南

启用检查

您可以使用 AccessibilityChecks 类启用和配置无障碍功能测试

Kotlin

import androidx.test.espresso.accessibility.AccessibilityChecks

@RunWith(AndroidJUnit4::class)
@LargeTest
class MyWelcomeWorkflowIntegrationTest {
    init {
        AccessibilityChecks.enable()
    }
}

Java

import androidx.test.espresso.accessibility.AccessibilityChecks;

@RunWith(AndroidJUnit4.class)
@LargeTest
public class MyWelcomeWorkflowIntegrationTest {
    @BeforeClass
    public void enableAccessibilityChecks() {
        AccessibilityChecks.enable();
    }
}

默认情况下,当您执行 ViewActions 中定义的任何视图操作时,会运行检查。每次检查都包括执行操作的视图以及所有子视图。您可以通过将 true 传递给 setRunChecksFromRootView() 来评估屏幕的整个视图层次结构,如以下代码片段所示

Kotlin

AccessibilityChecks.enable().setRunChecksFromRootView(true)

Java

AccessibilityChecks.enable().setRunChecksFromRootView(true);

抑制部分结果

Espresso 对您的应用运行无障碍功能检查后,您可能会发现一些改进应用无障碍功能的机会,但您无法立即解决。为了阻止 Espresso 测试因这些结果而持续失败,您可以暂时忽略它们。无障碍测试框架 (ATF) 通过 setSuppressingResultMatcher() 方法提供了此功能,该方法指示 Espresso 抑制所有满足给定匹配器表达式的结果。

当您对应用进行更改以解决无障碍功能的某个方面时,让 Espresso 显示尽可能多的其他无障碍功能方面的结果是有益的。因此,最好只抑制某些已知有待改进的机会。

当您暂时抑制计划稍后解决的无障碍测试结果时,重要的是不要意外地抑制类似的结果。因此,请使用范围狭窄的匹配器。为此,请选择一个 匹配器,以便 Espresso 仅在满足以下每个无障碍检查时才抑制给定结果

  1. 特定类型的无障碍功能检查,例如检查触摸目标大小的检查。
  2. 评估特定 UI 元素(例如按钮)的无障碍功能检查。

ATF 定义了多个匹配器,可帮助您定义要在 Espresso 测试中显示哪些结果。以下示例抑制了与单个 TextView 元素的颜色对比度相关的检查结果。该元素的 ID 是 countTV

Kotlin

AccessibilityChecks.enable().apply {
        setSuppressingResultMatcher(
                allOf(
                    matchesCheck(TextContrastCheck::class.java),
                    matchesViews(withId(R.id.countTV))
                )
        )
}

Java

AccessibilityValidator myChecksValidator =
    AccessibilityChecks.enable()
        .setSuppressingResultMatcher(
            allOf(
                matchesCheck(TextContrastCheck.class),
                matchesViews(withId(R.id.countTV))));