Android Espresso: как я могу протестировать определенный фрагмент при выполнении одного действия с несколькими фрагментами

Мое приложение состоит из одного Activity для многих Fragments.

Я хочу использовать Espresso для проверки пользовательского интерфейса Fragments. Однако я столкнулся с проблемой.

Как я могу проверить Fragment, который не добавлен в Activity в onCreate. Все примеры, которые я видел с помощью Fragments, включают Fragment, добавляемый в onCreate. Итак, как я могу сказать Espresso перейти к конкретному Fragment и начать оттуда?

Спасибо

Ответы

Ответ 1

Espresso может тестировать Fragments только в том случае, если они отображаются. И это требует, чтобы они отображались с помощью Activity.

С вашей текущей настройкой вам нужно будет использовать Espresso до click() по своему пути (например, пользователю) к Fragment, который вы действительно хотите протестировать.

В одном из моих проектов у меня есть ViewPager, который отображает Fragments. Для тех Fragments я использую пользовательский FragmentTestRule, чтобы проверить их изолированно. Я могу начать каждый Fragment напрямую и использовать Espresso для его проверки. См. этот ответ.

Вы также можете:

  • Не используйте Fragments. Activities легче тестировать. Вы можете протестировать каждый Activity самостоятельно. В большинстве случаев Fragments не имеет преимуществ перед Activities. Fragments просто затрудняют реализацию и тестирование.
  • Включите FragmentActivity, чтобы сразу показать определенный Fragment при его создании. Например. добавив к вашему FragmentActivity дополнительный урон. Но это добавит тестовый код в ваше приложение, что, как правило, не является хорошим решением.