16

Мое приложение состоит из одного Activity для многих Fragments.Android Espresso: как протестировать определенный фрагмент при выполнении одного действия для нескольких фрагментарных архитектур

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

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

Благодаря

ответ

0

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

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

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

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

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

Не использовать фрагменты ??? –

+0

[FragmentTestRule] (https://github.com/21Buttons/FragmentTestRule) - это реализация связанного ответа. –

+7

Фрагменты загружаются быстрее, чем действия (они даже могут быть предварительно загружены в память), они позволяют выполнять модуляцию и повторное использование компонентов, и не обязательно должны отображаться в полноэкранном режиме (их можно разместить в макете, как и в любом другом виде). Фрагменты очень популярны, потому что они значительно улучшают активность. Высказывание фрагментов не дает преимуществ, это невероятно неточно, и преимущество их использования намного превышает сложность тестирования. – OldSchool4664