【发布时间】:2020-12-16 12:31:38
【问题描述】:
Espresso 不执行单击此代码生成的用于启用 GPS 的对话框:
rae.startResolutionForResult(
context,
Constants.GPS_REQUEST
)
我还没有创建这个对话框,所以它不是我的“屏幕”或“应用程序”的一部分,它是由系统或请求解决 gps 分辨率生成的。
所以我检查是否启用了 gps,如果没有,那么这是我按下它的代码行:
onView(withText("OK")).perform(click())
但它不起作用,因为它看起来像 Espresso 一直在等待某些事情发生,然后它单独崩溃:
androidx.test.espresso.NoActivityResumedException: No activities in stage RESUMED. Did you forget to launch the activity. (test.getActivity() or similar)?
如果我在withText("Random words sjdj") 上设置随机单词也没关系,因为“它正在等待”
我考虑过单击坐标,但由于高度和宽度的原因,这看起来像是一个不稳定的测试,并且可能根本不准确(我说它是出于无知)并且可能无法正常工作,因为 espresso 正在等待.
编辑 1:
如果我等到测试自行停止,它会抛出下一个错误:
androidx.test.espresso.NoActivityResumedException: No activities in stage RESUMED. Did you forget to launch the activity. (test.getActivity() or similar)?
我猜 Activity 是 onPause 或类似的,正在等待对话解决?
但是如果我设置好位置,测试就可以正常工作
我可以做些什么来接受/取消这个对话框?
我不想手动检查位置是否开启。我想测试一切是否正常。
这是实际屏幕的图像
【问题讨论】:
-
您是否尝试过点击按钮的 ID?这些系统对话框的 ID 为 button1 和 button2,所以它类似于
onView(withId(android.R.id.button1)).perform(click()) -
嗨@agoff 谢谢你的回复!但遗憾的是它无法让它工作,因为它一直在等待,我发现如果我等待太久,它会抛出下一个错误:
androidx.test.espresso.NoActivityResumedException: No activities in stage RESUMED. Did you forget to launch the activity. (test.getActivity() or similar)?我猜这是因为活动是 onPause 所以 Espresso 正在等待它恢复?您对此有何看法?
标签: android testing android-espresso ui-testing android-gps