Flutter集成测试搭配FlutterFire适配Firebase Test Lab无法连接后端
问题根因
从报错日志的请求地址http://localhost:9099/www.googleapis.com/identitytoolkit/v3/relyingparty/signupNewUser可以直接定位问题:你的集成测试代码中配置了使用Firebase本地模拟器套件。
在iOS模拟器上运行测试时,模拟器和开发机共享网络栈,所以可以正常访问开发机上运行的9099端口模拟器服务;但部署到物理iOS设备后,设备的localhost指向自身,而设备上并没有运行Firebase模拟器服务,因此出现连接被拒绝的报错。
解决方案
场景1:需在物理设备上运行基于本地模拟器的测试
- 确保开发机和测试用iOS物理设备连接在同一局域网下
- 将集成测试代码中Firebase模拟器的连接地址从
localhost替换为开发机的局域网IP(例如192.168.1.5),对应服务的端口保持不变 - 重新打包测试包后即可正常连接开发机上的模拟器服务
场景2:需上传测试包到Firebase Test Lab运行
- 移除集成测试代码中所有Firebase本地模拟器的初始化配置,让FlutterFire默认连接线上正式Firebase服务
- 若需要测试环境隔离,可提前将测试所需的预置数据写入Firebase项目的测试环境,打包时使用对应测试环境的
GoogleService-Info.plist配置文件
额外检查项
- 确认打包时使用的
GoogleService-Info.plist为对应测试环境的正确配置,没有混用开发/生产环境文件 - 确认测试用物理设备没有开启代理、VPN,也没有网络防火墙限制Firebase相关域名的访问
内容的提问来源于stack exchange,提问作者Jon Mountjoy
相关产品推荐
相关产品推荐

