Espresso测试视图位于对话框下方,因此Espresso无法找到它

时间:2016-01-07 11:06:23

标签: android dialog android-espresso

我想验证UI上有一个视图,它会计算一些仲裁文本。因此我正在使用:

onView(withId(R.id.my_view_id)).check(matches(withText("my text")));

问题是,根据设备的电池电量,可能会出现一个说明电池电量不足的对话框。

将显示的对话框是正常的AlertDialog

如果我没有显示对话框,我的测试运行正常,我将会显示上述espresso语句失败的那一刻。

我怎么能告诉espresso我不关心对话框而只是想找到视图?当Espresso尝试在R.id.my_view_id上找到视图AlertDialog

2 个答案:

答案 0 :(得分:0)

AFAIK没有办法做到这一点。来自RootViewPicker.java

try {
    writer.flush();
} catch (IOException e) {
    logger.info("Stream closed in writeValue()", e);
}

我建议模拟您的电池对话逻辑,以便您可以控制测试期间是否显示。有关详细信息,请参阅http://blog.sqisland.com/2015/04/dagger-2-espresso-2-mockito.htmlhttps://gum.co/AndroidTestSharedPref

答案 1 :(得分:0)

嗯,我也看到了另一个解决方案而不是chiuki。

您可以添加@Before注释,例如

@Before
public void checkIfAlertDialogIsShown() {
   //your code
}

此方法将在每次Espresso测试之前运行。因此,您可以检查是否发生了电量不足的情况。

不幸的是,Espresso无法捕获AlertDialog或系统通知。为此,您可以使用另一个名为uiautomater的Google工具。它适用于Espresso,因此您可以同时使用它们。

因此,在@Before带注释的方法中,如果发生,您将使用uiatomater框架进行检查。如果为true,则关闭此对话框。

请查看以下链接,详细了解uiatomator

希望有所帮助