접근성 확인

접근성 테스트를 통해 접근성 기능이 필요한 사용자를 포함하여 전체 사용자층의 관점에서 앱을 경험할 수 있습니다. 이러한 형태의 테스트를 통해 앱을 더욱 강력하고 다용도로 만들 수 있습니다.

이 페이지에서는 기존 Espresso 테스트에 접근성 검사를 추가하는 방법을 설명합니다. 접근성에 관한 자세한 내용은 접근성 가이드를 참조하세요.

검사 사용 설정

다음과 같이 AccessibilityChecks 클래스를 통해 접근성 테스트를 사용 설정하고 구성할 수 있습니다.

Kotlin

    import androidx.test.espresso.contrib.AccessibilityChecks

    @RunWith(AndroidJUnit4::class)
    @LargeTest
    class MyWelcomeWorkflowIntegrationTest {
        companion object {
            @Before @JvmStatic
            fun enableAccessibilityChecks() {
                AccessibilityChecks.enable()
            }
        }
    }
    

자바

    import androidx.test.espresso.contrib.AccessibilityChecks;

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

기본적으로 검사는 ViewActions에 정의된 뷰 작업을 할 때 실행됩니다. 각 검사에는 모든 하위 뷰뿐만 아니라 작업이 실행된 뷰가 포함됩니다. 다음 코드 스니펫에서와 같이 truesetRunChecksFromRootView()에 전달하여 각 검사 중에 화면의 전체 뷰 계층 구조를 평가할 수 있습니다.

Kotlin

    AccessibilityChecks.enable().setRunChecksFromRootView(true)
    

자바

    AccessibilityChecks.enable().setRunChecksFromRootView(true);
    

결과 하위 세트 숨기기

Espresso가 앱에서 접근성 검사를 실행한 이후에는 즉시 해결할 수 없는 앱의 접근성을 개선할 몇 가지 기회를 찾을 수 있습니다. 이러한 결과 때문에 Espresso 테스트가 계속 실패하지 않게 하려면 테스트를 일시적으로 무시하면 됩니다. 접근성 테스트 프레임워크(ATF)는 Espresso가 지정된 매처 표현식을 충족하는 모든 결과를 표시하지 않도록 지시하는 setSuppressingResultMatcher() 메서드를 사용하여 이 기능을 제공합니다.

접근성의 한 측면을 다루는 앱을 변경할 때 Espresso가 접근성의 다른 측면에 관한 결과를 가능한 한 많이 표시하는 것이 좋습니다. 따라서 알려진 특정 개선 기회만 표시하지 않는 것이 가장 좋습니다.

나중에 해결하려는 접근성 테스트 결과를 일시적으로 표시하지 않을 때는 비슷한 결과를 실수로 숨기지 않는 것이 중요합니다. 따라서 범위가 좁은 매처를 사용합니다. 이렇게 하려면 Espresso가 다음과 같은 접근성 검사 각각을 충족하는 경우에만 지정된 결과를 표시하지 않도록 매처를 선택합니다.

  1. 터치 타겟 크기를 확인하는 것과 같은 특정 유형의 접근성 검사
  2. 버튼과 같은 특정 UI 요소를 평가하는 접근성 검사

ATF는 여러 매처를 정의하여 Espresso 테스트에 표시할 결과를 정의하는 데 도움을 줍니다. 다음 예에서는 단일 TextView 요소의 색상 대비와 관련된 검사 결과를 표시하지 않습니다. 요소의 ID는 countTV입니다.

Kotlin

    AccessibilityChecks.enable().apply {
            setSuppressingResultMatcher(
                    allOf(
                        matchesCheckNames(`is`("TextContrastViewCheck")),
                        matchesViews(withId(R.id.countTV))
                    )
            )
    }
    

자바

    AccessibilityValidator myChecksValidator = AccessibilityChecks.enable();
    Matcher<? super AccessibilityViewCheckResult> myChecksMatcher =
            Matchers.allOf(matchesCheckNames(is("TextContrastViewCheck")),
                           matchesViews(withId(R.id.countTV)));
    myChecksValidator.setSuppressingResultMatcher(myChecksMatcher);