我想验证UI上有一个视图,它会计算一些仲裁文本。因此我正在使用:
onView(withId(R.id.my_view_id)).check(matches(withText("my text")));
问题是,根据设备的电池电量,可能会出现一个说明电池电量不足的对话框。
将显示的对话框是正常的AlertDialog
。
如果我没有显示对话框,我的测试运行正常,我将会显示上述espresso语句失败的那一刻。
我怎么能告诉espresso我不关心对话框而只是想找到视图?当Espresso尝试在R.id.my_view_id
上找到视图AlertDialog
。
答案 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.html和https://gum.co/AndroidTestSharedPref。
答案 1 :(得分:0)
嗯,我也看到了另一个解决方案而不是chiuki。
您可以添加@Before
注释,例如
@Before
public void checkIfAlertDialogIsShown() {
//your code
}
此方法将在每次Espresso
测试之前运行。因此,您可以检查是否发生了电量不足的情况。
不幸的是,Espresso无法捕获AlertDialog
或系统通知。为此,您可以使用另一个名为uiautomater
的Google工具。它适用于Espresso,因此您可以同时使用它们。
因此,在@Before带注释的方法中,如果发生,您将使用uiatomater
框架进行检查。如果为true,则关闭此对话框。
请查看以下链接,详细了解uiatomator
:
希望有所帮助