首页 > 解决方案 > 带有模拟位置的 Espresso :避免 Google 的体验弹出窗口

问题描述

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

设置

实际结果/问题

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

消息是“为了获得更好的体验,请打开使用 Google 定位服务的设备定位。” 如下图所示:

谷歌位置服务弹出窗口

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

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

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

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

问题

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

还有一件事

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


坏消息

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

因此,根据用例,切换到真实设备可以解决您的问题,就像本主题中提到的问题一样。

标签: mockinggoogle-play-servicesandroid-espressogcloudfirebase-test-lab

解决方案


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

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

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


推荐阅读