Я пытаюсь написать инструментальный тест для службы 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
в этой тестовой документации, но кажется неправильным изменять мой сервис исключительно для целей тестирования.Это законное беспокойство, или все-таки лучше / нормальнее возвращать ненулевое связующее в любом случае?