Переход от FragmentController к FragmentScenario

Я использую robolectric и обновляю свои фрагменты поддержки до фрагментов androidx. Это означает обновление тестов, использующих FragmentController<>, до рекомендованного FragmentScenario.

С помощью FragmentController я мог запустить его и позвонить controller.get()чтобы получить фактический фрагмент и напрямую управлять им, делая публичные вызовы. Есть ли способ сделать это с помощью FragmentScenario и получить прямой доступ к экземпляру androidx.Fragment?

Причина, по которой я хочу вызвать общедоступный метод напрямую, заключается в том, что действие, которое содержит списки фрагментов для намерения и вызывает метод для содержащегося в нем фрагмента, и я хочу протестировать связанное с ним поведение.

1 ответ

Ответ - использовать FragmentScenario.onFragment(). Это позволяет вам выполнять действие непосредственно в потоке пользовательского интерфейса фрагмента, давая вам ссылку на фрагмент.

например

FragmentScenario<MyCustomFragment> controller = FragmentScenario.launch(MyCustomFragment.class);

controller.onFragment(fragment -> {
    fragment.myCustomFragMethod1();
    fragment.myCustomFragMethod2();
}

// assertions here, testing that myCustomFragMethod1() worked.
Другие вопросы по тегам