Espresso with mock location : 避免 Google 的体验弹窗

Espresso with mock location : avoid Google's experience popup

我正在使用 Espresso 在使用用户位置的基于地图的应用程序上进行一些 UI 测试。

设置

实际结果/问题

有效:然后将用户位置伪造为我编码的经纬度。但是过了一会儿,我遇到了一些麻烦。经过几次测试后,我得到一个系统弹出窗口,似乎是由嵌入在我们应用程序中的 com.google.android.gms:play-services 触发的。

消息是"For a better experience, turn on device location, which uses Google's location service.",如下图所示:

所以看起来模拟代码以某种方式触发了这个弹出窗口,然后破坏了所有剩余的测试,因为弹出窗口在单击其中一个按钮之前不会消失。

UI Automator:不是合适的解决方案

我知道我可以使用 UI Automator 添加一些代码来验证弹出窗口,但我想避免这种解决方法,因为:

请注意,我无法在我的设备或模拟器上重现此问题,但只有当我 运行 我在 gcloud(Firebase 测试实验室)上进行测试时...

问题

你遇到过这个问题吗?您是否知道如何避免此弹出窗口或任何不涉及 UI Automator 的解决方法?

还有一件事

请记住,我正在 运行ning 远程测试,在未登录任何 Google 帐户的虚拟设备上。此外,我无权访问设备 system/settings 但最终我应该能够使用 ADB 命令获得一些权限或将一些设置应用于系统。


坏消息

实际上,虚拟设备上的 Firebase 测试实验室部分支持模拟位置。有关更多信息,请参阅下面的评论。

因此,根据使用情况,切换到真实设备可以解决您的问题,如本主题中提到的问题。

如果在某些设备上发生但在其他设备上有效,则您所看到的可能是 Firebase 测试实验室中的错误。例如。适用于三星实体设备,但不适用于 HTC 实体设备。或者适用于所有物理设备但不适用于虚拟设备。

由于我无法在 Stack Overflow 上直接向您发送消息,我鼓励您加入 https://firebase-community.slack.com/ 上的 Firebase 测试实验室 Slack 频道 (#test-lab)。

Firebase 工程师将积极调查您遇到的问题,并直接查看项目中 运行 的测试 运行。