ユーザー補助機能をテストすることで、ユーザー補助を必要とするユーザーを含め、ユーザーベースの全体の観点からアプリを体験できます。このテスト方法によって、アプリをより強力で汎用性の高いものにする機会が明らかになります。
このページでは、既存の 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 に指示します。
ユーザー補助機能の 1 つの観点に対処する変更をアプリに加えるとき、他の観点に関する結果をできるだけ多く Espresso に表示させるのが有益です。そのため、特定の改善点のみ抑制することをおすすめします。
後で対処することを予定しているユーザー補助機能テスト結果の表示を一時的に抑制するときは、似たような結果を誤って抑制しないようにすることが重要です。このために、範囲を限定したマッチャーを使用します。そのためには、マッチャーを選択して、以下のユーザー補助機能チェックのそれぞれを満たす場合にのみ、Espresso が特定の結果を抑制するようにします。
- タッチ ターゲットのサイズを確認するなど、特定タイプのユーザー補助機能チェック。
- ボタンなどの特定の UI 要素を評価するユーザー補助機能チェック。
ATF では複数のマッチャーが定義されており、Espresso テストで表示する結果を定義できるようになっています。次の例では、1 つの 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))));