You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何仅在UI Tests中使用GPX文件模拟位置

在UI Tests中单独启用GPX位置模拟(不影响常规运行)

当然可以!你完全可以只在UI Tests的运行流程中启用位置模拟,而不会影响模拟器常规运行时的设置。下面是两种靠谱的实现方式:

方法一:通过Scheme的Test专属配置设置

这是最直接的可视化配置方式,完全隔离常规Run和Test的位置设置:

  • 打开你的Xcode项目,点击顶部的Scheme选择框,选择Edit Scheme...
  • 在弹出的窗口左侧,选中Test选项卡
  • 切换到Options标签页,找到Allow Location Simulation选项并勾选
  • 在Default Location下拉菜单中,选择你需要的GPX文件(如果列表里没有,点击Add GPX File to Project...将你的文件导入项目即可)
  • 保存设置后,只有当你运行UI Tests时,这个位置模拟才会生效;常规启动模拟器运行App时,依然会使用默认的位置配置

方法二:在UI Tests代码中动态加载GPX文件

如果需要更灵活的控制(比如不同测试用例使用不同位置),可以直接在测试代码中指定GPX文件,完全脱离Scheme设置:

  1. 先确保你的GPX文件已添加到项目,并且在Target Membership中勾选了你的UI Tests target
  2. 在测试类的setUp()或具体测试方法中添加代码:
import XCTest

class YourUITests: XCTestCase {
    override func setUpWithError() throws {
        try super.setUpWithError()
        let app = XCUIApplication()
        
        // 方式1:通过启动参数加载GPX文件
        app.launchArguments += ["-locationSimulationEnabled", "true"]
        app.launchEnvironment["LOCATION_GPX_FILE"] = "YourGPXFileName.gpx"
        app.launch()
        
        // 方式2:iOS 14+ 直接设置坐标(无需GPX文件)
        if #available(iOS 14.0, *) {
            let targetCoordinate = CLLocationCoordinate2D(latitude: 37.3318, longitude: -122.0312)
            app.setLocation(targetCoordinate)
        }
    }
}

注意事项

  • 确保GPX文件格式正确,示例模板:
<?xml version="1.0" encoding="UTF-8"?>
<gpx version="1.1" creator="Xcode">
    <wpt lat="37.3318" lon="-122.0312">
        <name>Apple Park</name>
    </wpt>
</gpx>
  • 检查App的Info.plist是否添加了位置权限描述(NSLocationWhenInUseUsageDescription或NSLocationAlwaysAndWhenInUseUsageDescription),即使是测试,App也需要权限才能获取位置
  • 运行测试前确认模拟器的定位服务处于开启状态(路径:模拟器设置→隐私与安全性→定位服务)

内容的提问来源于stack exchange,提问作者Grumme

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 03:11:12