Я пытаюсь проверить внешнюю привязку к Сервису, который я определил. После класса, который я использую для инструментального теста:
@Rule
public final ServiceTestRule serviceRule = new ServiceTestRule();
@Test
public void testWithBoundService() throws TimeoutException, RemoteException {
IMyInterface iMyInterface;
Intent serviceIntent =
new Intent(ApplicationProvider.getApplicationContext(),
MyService.class);
IBinder binder = serviceRule.bindService(serviceIntent);
assertNotNull(binder);
iMyInterface = IMyInterface.Stub.asInterface(binder);
assertTrue(iMyInterface.retrieveValue(new Attribute()).getValues().get(0).equals("home"));
}
@Test
public void testWithBoundServiceExternal() throws TimeoutException, RemoteException {
IMyInterface iMyInterface;
Intent serviceIntent = new Intent();
serviceIntent.setClassName("a.b.c.d", "a.b.c.d.MyService");
IBinder binder = serviceRule.bindService(serviceIntent);
assertNotNull(binder);
iMyInterface = IMyInterface.Stub.asInterface(binder);
boolean reachedHere = false;
assertTrue(iMyInterface.retrieveValue(new Attribute()).getValues().get(0).equals("home"));
}
Первая тестовая функция выполняется без ошибок, вторая не работает со следующим сообщением:
Не удалось привязать к сервису! Объявлен ли ваш сервис в манифесте?
Служба определена в пакете a.b.c.d, аналогичном интерфейсу Aidl, а InstrumentedTest работает в пакете a.b.c.e