Android如何在仪器化测试中使用模拟位置?
Android 仪器化测试模拟位置问题解决方案
- 针对
ACCESS_MOCK_LOCATION权限警告问题:
该警告是Android Lint针对受保护系统权限的通用检测,对测试场景无实际影响。添加tools:ignore="ProtectedPermissions"是官方认可的标准处理方式,不存在额外风险,你也可以通过在Lint配置文件中对debug构建变体全局屏蔽该检测规则,避免重复添加忽略属性。 - 针对多设备/测试农场无需手动配置模拟位置提供器的问题:
可通过adb命令实现全自动配置,无需人工操作设备设置:
执行adb shell appops set <测试包名> android:mock_location allow即可直接将对应包设置为合法模拟位置提供器。本地自动化测试可将该命令加入测试前置脚本,Firebase测试农场支持自定义测试前置执行adb命令,完全适配集群测试场景。 - 针对多应用同时测试模拟位置的问题:
Android原生系统级模拟位置机制默认同一时间仅支持一个应用作为全局模拟位置提供器,可通过两种方案规避该限制:- 在应用内部的位置服务层接入测试桩,将位置获取接口替换为测试专用的模拟数据源,不需要申请系统模拟位置权限,也不会和其他应用的模拟逻辑产生冲突,是多应用并行测试的首选方案。
- 如果必须使用系统级模拟位置能力,可单独编写一个统一的模拟位置提供器应用,所有待测试应用的模拟位置请求都代理到该应用统一输出,即可实现多应用同时获取相同的模拟位置数据。
内容的提问来源于stack exchange,提问作者Sqrt-1764
相关产品推荐
相关产品推荐

