Testowanie ułatwień dostępu pozwala sprawdzić aplikację z perspektywy wszystkich użytkowników, w tym tych, którzy mają specjalne potrzeby. Ta forma testowania może ujawnić możliwości zwiększenia skuteczności i wszechstronności aplikacji.
Na tej stronie dowiesz się, jak dodać do istniejących testów Espresso sprawdzanie dostępności. Więcej informacji o ułatwieniach dostępu znajdziesz w przewodnikach dotyczących ułatwień dostępu.
Włączanie sprawdzania
Testowanie ułatwień dostępu możesz włączyć i skonfigurować za pomocą klasy
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();
}
}
Domyślnie sprawdzanie jest przeprowadzane, gdy wykonasz dowolną czynność związaną z wyświetlaniem zdefiniowaną w ViewActions. Każde sprawdzenie obejmuje widok, w którym wykonano działanie, oraz wszystkie widoki podrzędne. Podczas każdego sprawdzania możesz ocenić całą hierarchię widoków ekranu, przekazując wartość true do funkcji setRunChecksFromRootView(), jak pokazano w tym fragmencie kodu:
Kotlin
AccessibilityChecks.enable().setRunChecksFromRootView(true)
Java
AccessibilityChecks.enable().setRunChecksFromRootView(true);
Ukrywanie podzbiorów wyników
Po przeprowadzeniu przez Espresso testów ułatwień dostępu w aplikacji możesz znaleźć kilka możliwości poprawy ułatwień dostępu, których nie możesz od razu wykorzystać. Aby zapobiec ciągłemu niepowodzeniu testów Espresso z powodu tych wyników, możesz je tymczasowo zignorować. Platforma Accessibility Test Framework (ATF) udostępnia tę funkcję za pomocą metody setSuppressingResultMatcher(), która nakazuje Espresso pomijanie wszystkich wyników spełniających podane wyrażenie dopasowujące.
Gdy wprowadzisz w aplikacji zmiany dotyczące jednego aspektu ułatwień dostępu, warto, aby Espresso wyświetlało wyniki dotyczące jak największej liczby innych aspektów ułatwień dostępu. Z tego powodu najlepiej jest pomijać tylko konkretne, znane możliwości poprawy.
Gdy tymczasowo pomijasz wyniki testów ułatwień dostępu, które planujesz rozwiązać później, ważne jest, aby nie pominąć przypadkowo podobnych wyników. Z tego powodu używaj dopasowań o wąskim zakresie. Aby to zrobić, wybierz matcher, tak aby Espresso pomijało dany wynik tylko wtedy, gdy spełnia każdy z tych testów dostępności:
- Sprawdzanie ułatwień dostępu określonego typu, np. sprawdzanie rozmiaru obszaru docelowego dotyku.
- Sprawdzanie ułatwień dostępu, które ocenia konkretny element interfejsu, np. przycisk.
ATF definiuje kilka funkcji dopasowywania, które pomagają określać, jakie wyniki mają być wyświetlane w testach Espresso. Poniższy przykład pomija wyniki testów dotyczących kontrastu kolorów pojedynczego elementu TextView. Identyfikator elementu to 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))));