Я использую futuresimple's Android Floating Action Button. Я бы хотел использовать Espresso для создания тестов интерфейса, которые взаимодействуют с ним. multiple_actions
- это просто кнопка, открывающая меню плавающей кнопки (FAB). draw_fab
- одна из кнопок плавающего действия, которая появляется, когда вы нажимаете multiple_actions
. Нажав draw_fab
, вы начинаете новую деятельность в андроиде, и в этой операции я хочу нажать стандартную кнопку с идентификатором componentMenuButton
(что само вызывает меню).Тест Espresso UI на элементах меню Android Floating Action Button
@Test
public void simpleCircuitTest() {
onView(withId(R.id.multiple_actions)).perform(click());
onView(withId(R.id.draw_fab)).perform(click());
onView(withId(R.id.componentMenuButton)).perform(click());
// other stuff...
}
Когда я запускаю этот тест, я вижу, что первый щелчок работает и отображаются кнопки плавающего меню. Однако вызов нажать draw_fab
, кажется, имеет нулевой аффект, и как таковой я получаю ошибку No views in hierarchy found matching: with id...
при достижении вызова нажать componentMenuButton
.
Здесь я смущаюсь.
@Test
public void simpleCircuitTest() {
onView(withId(R.id.draw_fab)).check(matches(isDisplayed()));
View v = mActivityRule.getActivity().findViewById(R.id.draw_fab);
Log.d(TAG, String.valueOf(v.getVisibility()==v.VISIBLE));
Log.d(TAG, String.valueOf(v.isShown()));
Log.d(TAG, String.valueOf(v.isEnabled()));
onView(withId(R.id.multiple_actions)).perform(click());
onView(withId(R.id.draw_fab)).check(matches(isDisplayed()));
Log.d(TAG, String.valueOf(v.getVisibility()==v.VISIBLE));
Log.d(TAG, String.valueOf(v.isShown()));
Log.d(TAG, String.valueOf(v.isEnabled()));
}
Выше моя попытка выяснить, что происходит. Когда я запускаю этот тест, хотя я еще не нажал на multiple_actions
FAB, isDisplayed
проходит, и все выходные данные журнала верны. А затем в следующем сегменте Espresso нажимает multiple_actions
и снова все выходные данные верны. Таким образом, если вы нажмете на multiple_actions
, вы получите draw_fab
, чтобы щелкнуть нулевым ударом на прохождение теста. Это не так, как должно быть?
Моя догадка заключается в том, что репо, которое я использую для плавающих кнопок действий, просто не поддерживает использование эспрессо? Это или есть что-то особенное в отношении FAB или что-то общее о Espresso, которое мне не хватает. Что он?