具有模拟位置的浓缩咖啡:避免Google弹出体验

时间:2018-10-14 20:12:35

标签: mocking google-play-services android-espresso gcloud firebase-test-lab

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

设置

实际结果/问题

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

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

Google location service popup

因此,似乎模拟代码会以某种方式触发此弹出窗口,然后破坏所有其余测试,因为直到单击按钮之一,弹出窗口才会消失。

UI Automator:不合适的解决方案

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

  • 我不知道是什么触发了此弹出窗口(似乎是随机的)
  • 在运行针对该弹出窗口的每个测试之前,我不想运行一些糟糕的/重复的代码。
  • 实际上,我没有使用UI Atomator进行测试,也不想将其他库导入到我的项目中。

请注意,只有在gcloud(Firebase测试实验室)上运行测试时,我才能在设备或仿真器上重现此问题。

问题

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

还有一件事情

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


坏消息

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

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

2 个答案:

答案 0 :(得分:0)

根据此blog post,根据美联社(AP)的调查,即使您停用了位置记录功能,搜索巨人每次打开Goog​​le地图,获取某些自动天气更新信息或进行搜索时仍会跟踪您用于浏览器中的内容。

有一个建议的解决方案,可以阻止此弹出窗口,这将关闭您Google帐户中埋藏的位置跟踪功能,称为“ 网络与应用活动记录”。

以下是步骤

从浏览器:

  
      
  • 访问您的Google帐户,然后在右上角的下拉菜单中找到 Google帐户
  •   
  • 然后转到个人信息和隐私,选择转到我的活动
  •   
  • 从左侧导航栏中,单击活动控件
  •   
  • 在那里,您可以看到名为网络和应用活动记录的设置,可以将其关闭
  •   

在您的Android手机上:

  
      
  • Google设置转到 Google帐户
  •   
  • 点击数据和个性化
  •   
  • 然后您可以找到网络和应用活动,将其关闭。
  •   

暂停网络和应用活动可能会限制或禁用Google服务中的更多个性化体验。

答案 1 :(得分:0)

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

由于我无法直接在Stack Overflow上向您发送消息,因此建议您加入https://firebase-community.slack.com/上的Firebase Test Lab Slack频道(#test-lab)。

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