Тестирование эспрессо: сервис создан правильно - PullRequest
0 голосов
/ 04 ноября 2019

Я пытаюсь создать тест с эспрессо, который проверяет, создан ли сервис при нажатии кнопки.

Код MainActivity:

public class MainActivity ... {

    // Monitors the state of the connection to the service.
        private final ServiceConnection mServiceConnection = new ServiceConnection() {

            @Override
            public void onServiceConnected(ComponentName name, IBinder service) {
                LocalBinder binder = (LocalBinder) service;
                mService = binder.getService();
                mBound = true;
            }

            @Override
            public void onServiceDisconnected(ComponentName name) {
                mService = null;
                mBound = false;
            }
        };

    //onCreate() doesn't matter, nothing related with service

    @Override
        protected void onStart() {
            super.onStart();
            //...
            mRequestLocationUpdatesButton = findViewById(R.id.request_location_updates_button);

            mRequestLocationUpdatesButton.setOnClickListener(this);

            bindService(new Intent(this, LocationUpdatesService.class), mServiceConnection,
                    Context.BIND_AUTO_CREATE);
        }

        @Override
        public void onClick(View v) {
            if (v.getId() == R.id.request_location_updates_button) {
                if (!checkPermissions()) {
                    requestPermissions();
                } else {
                    mService.requestLocationUpdates();
                }
        }
}

Как я могу зарегистрироватьсятестовый класс? Я знаю, как проверить, создано ли другое действие, которое я создал, но я не знаю, как контролировать создание службы.

Тестовый класс:

@RunWith(AndroidJUnit4.class)
public class CheckActivityBehaviour {

    @Rule
    public ActivityScenarioRule<MainActivity> activityMain
            = new ActivityScenarioRule<MainActivity>(MainActivity.class);

    @Test
    public void performClick() {
        onView(withId(R.id.request_location_updates_button)).perform(click());
        //on click this button service is started
    }
}
...