Testing an android accessibility service?

1.4k Views Asked by At

I'm developing an Android application with a service that extends AccessibilityService. I'd like to be able to test this without mocking out the accessibility framework.

Does anyone have some recommendation on the best way to go about this?

I'd like to set up some different activities, move between them, and verify that my accessibility service responds correctly. I tried using a ServiceTestCase, but unfortunately that requires you set up the service yourself. I'm not sure how to set it up in a way similar to how the accessibility framework will set it up for me.

1

There are 1 best solutions below

3
On

Based on:

Create a Service extending AccessibilityService:

public class TestService extends AccessibilityService {

  @Override
  public void onAccessibilityEvent(AccessibilityEvent evt) {
    //Your coding here   
  }

}

In your manifest file:

<service android:name=".TestService" android:enabled="true" >
    <intent-filter>
        <action android:name="android.accessibilityservice.AccessibilityService" />
    </intent-filter>
    <meta-data android:name="android.accessibilityservice" android:resource="@xml/accessibilityservice" />
</service>

In your resources (xml folder), create accessibilityservice.xml:

<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
                       android:accessibilityEventTypes="typeNotificationStateChanged"
                       android:accessibilityFeedbackType="feedbackAllMask"
                       android:notificationTimeout="100" />