Я пытаюсь проверить фрагмент, используя FragmentScenario. Этот фрагмент имеет свое собственное меню. На панели действий есть значок добавления, и нажатие на этот пункт меню запускает дочерний фрагмент, из которого пользователь может добавлять новые элементы. Поэтому я пытаюсь проверить это поведение. Однако, как вы, возможно, знаете, FragmentScenario запускает фрагмент в EmptyFragmentActivity, не запуская реальное действие хоста. Поскольку панель действий не является частью макета фрагмента, а относится к активности хоста, панель действий и, следовательно, меню даже не становятся видимыми во время тестирования. Итак, как я могу проверить взаимодействие с меню?
Я нашел эту информацию из официальных документов:
Если вам нужно вызвать метод для самого фрагмента, например,Отвечая на выбор в меню параметров, вы можете сделать это безопасно, реализовав FragmentAction:
@RunWith(AndroidJUnit4::class)
class MyTestSuite {
@Test fun testEventFragment() {
val scenario = launchFragmentInContainer<MyFragment>()
scenario.onFragment(fragment ->
fragment.onOptionsItemSelected(clickedItem) {
//Update fragment's state based on selected item.
}
}
}
}
Однако как передать правильный элемент в обратный вызов onOptionsItemSelected? Я попытался определить addMenuItem как переменную-член и инициализировать его внутри onCreateOptionsMenu, но он возвращает ноль. onCreateOptionsMenu не вызывается во время тестирования. Поэтому я не знаю, как проверить взаимодействие пользователя с меню.