Подтвердить что ты не робот

Android Test new Service в тестовом пакете

Я хотел протестировать класс в рамках, который запускает различные службы на основе намерения. Однако у меня возникают проблемы с созданием TestService внутри androidTest/ при запуске подключенного теста Android. Метод getService возвращает null.

Заранее благодарим за помощь и помощь!

@RunWith(AndroidJUnit4.class)
public class WakefulIntentSenderTest {
    private static final String SOME_ACTION = "someAction";

    private static class TestService extends Service {
        private boolean mCalled;

        @Override
        public void onCreate() {
            super.onCreate();
        }

        @Override
        public IBinder onBind(final Intent intent) {
            return null;
        }

        @Override
        public int onStartCommand(final Intent intent, final int flags, final int startId) {
            mCalled = true;
            return 0;
        }

        public boolean wasCalled() {
            return mCalled;
        }

        public class TestServiceBinder extends Binder {

        public TestService getService() {
            return TestService.this;
        }
    }

    @Test
    public void testWithBoundService() throws TimeoutException {
        // Create the service Intent.
        Intent serviceIntent =
                new Intent(InstrumentationRegistry.getTargetContext(), TestService.class);

        InstrumentationRegistry.getTargetContext().startService(intent);

        // Bind the service and grab a reference to the binder.
        IBinder binder = mServiceRule.bindService(serviceIntent);

        // Get the reference to the service, or you can call public methods on the binder directly.
        TestService service = ((TestService.TestServiceBinder) binder).getService();

        // Verify that the service is working correctly.
        assertEquals(service.wasCalled(), true);
    }
}

У меня также есть другие вопросы, когда TestService действительно создается внутри пакета "Тест". Если я попытаюсь запустить TestService через контекст приложения, это даст мне сообщение об ошибке Unable to start service Intent { cmp=com.example.abc.test/com.example.abc.WakefulIntentSenderTest$TestService } U=0: not found.

И выше код действительно просто продемонстрировать, могу ли я начать службу.

Дополнительная информация... InstrumentationRegistry вернет com.example.abc, когда вызывается getTargetContext(), и com.example.abc.test, когда вызывается getContext().

То, что я действительно хотел протестировать, - это класс, стоящий за com.example.abc, который использует PowerManager для запуска Сервиса с Wakelock. Но это в глубине моего разума, потому что я даже не могу запустить сервис из тестового пакета.

Наличие TestService внутри основного пакета также не является для меня вариантом: (

4b9b3361