【发布时间】:2016-11-28 11:45:53
【问题描述】:
我正在使用futuresimple 的Android Floating Action Button。我想使用 Espresso 创建与之交互的 UI 测试。 multiple_actions 只是打开浮动操作按钮 (FAB) 菜单的按钮。 draw_fab 是单击multiple_actions 时出现的浮动操作按钮之一。单击draw_fab 会启动一个新的android 活动,在这个活动中我希望按下一个ID 为componentMenuButton 的标准按钮(它本身会弹出一个菜单)。
@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 的调用似乎影响为零,因此当调用点击componentMenuButton 时,我收到No views in hierarchy found matching: with id... 错误。
这就是我感到困惑的地方。
@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 以进行单击对测试通过的影响为零。这不是应该的样子吗?
我现在的预感是我用于浮动操作按钮的存储库根本不支持 Espresso 使用?那或者我缺少关于 FAB 的一些特别之处或关于 Espresso 的一些基本内容。是哪个?
【问题讨论】:
标签: android android-espresso floating-action-button