Как проверить фрагмент с помощью сценария фрагмента? - PullRequest
0 голосов
/ 17 декабря 2018

Я пытаюсь проверить Fragment в изоляции.Для этого я пытаюсь FragmentScenario.

Документация Android предлагает действительно хороший пример.Но мой тест всегда терпит неудачу, потому что мой фрагмент приводит действие к интерфейсу в onAttach.

FragmentScenario luanches контейнер Activity, который (очевидно) не реализует интерфейс, требуемый моим фрагментом.

Мой вопрос: как обойти это?Как заставить деятельность контейнера реализовать интерфейс, который мне нужен?или есть лучший способ сделать это?Может быть, снять литье на onAttach и заменить другим методом?

Ответы [ 2 ]

0 голосов
/ 25 апреля 2019

Я выбрал другой подход.В итоге я использовал ActivityScenario для фрагментов, которые имели обратные вызовы для Activity.

Создал AccountTestActivity в моей сборке разработки.Упражнение реализует все мои различные обратные вызовы (LoginCallback, CreateAccountCallback и т. Д.) Из фрагментов, которые я хотел протестировать.

Я не хочу открывать свои классы для тестирования или добавлять дополнительные функции.

scenario = ActivityScenario.launch(AccountTestActivity::class.java).onActivity {
        logInFragment = LogInFragment()
        it.startFragment(logInFragment)
    }
0 голосов
/ 26 декабря 2018

Используйте ловушку, чтобы назначить член, расширить фрагмент, переопределить ловушку, чтобы обеспечить макет этого интерфейса.Если нет, используйте DI, чтобы внедрить это в открытый член, и просто назначьте макет напрямую.

class MainFragment : Fragment {

   override fun onAttach(context:Context) {
       mViewInterface = provideViewInterface()
   }

   protected fun provideViewInterface() = activity
}

class TestMainFragment:MainFragment() {
   override fun provideViewInterface() = mock()
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...