Android-инструментальный тест для несвязанного сервиса - PullRequest
0 голосов
/ 29 ноября 2018

Я пытаюсь написать инструментальный тест для службы Android.Это довольно простая реализация

public class MyService extends Service {
...
    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }
}

Служба запускается как служба переднего плана с

final Intent serviceIntent = new Intent(this, MyService.class);
startForegroundService(serviceIntent);

, а затем вызывает startForeground в течение 5 секунд, как и должно быть - это всеотлично работает на моем устройстве.

В этой документации говорится https://developer.android.com/guide/components/services о onBind, что «Вы всегда должны реализовывать этот метод, однако, если вы не хотите разрешать привязку, вам следуетreturn null. "

Я возвращаю ноль из onBind, , и мой сервис работает нормально на моем устройстве, если я возвращаю ноль.

Единственная тестовая документацияОднако я могу найти следующее: https://developer.android.com/training/testing/integration-testing/service-testing, который проверяет связанный сервис и возвращает что-то ненулевое из onBind:

https://github.com/googlesamples/android-testing/blob/master/integration/ServiceTestRuleSample/app/src/main/java/com/example/android/testing/ServiceTestRuleSample/LocalService.java

@Override
public IBinder onBind(Intent intent) {
    // If the Intent comes with a seed for the number generator, apply it.
    if (intent.hasExtra(SEED_KEY)) {
        mSeed = intent.getLongExtra(SEED_KEY, 0);
        mGenerator.setSeed(mSeed);
    }
    return mBinder;
}

public class LocalBinder extends Binder {

    public LocalService getService() {
        // Return this instance of LocalService so clients can call public methods.
        return LocalService.this;
    }
}

Теперь возникает дилемма: я мог бы скопировать относительно тривиальную реализацию onBind в этой тестовой документации, но кажется неправильным изменять мой сервис исключительно для целей тестирования.Это законное беспокойство, или все-таки лучше / нормальнее возвращать ненулевое связующее в любом случае?

...