在iOS UITest中获取当前GPS位置

在iOS UITest中获取当前GPS位置,ios,xcode,xcode-ui-testing,Ios,Xcode,Xcode Ui Testing,能否在UITest测试用例中获取手机/模拟器的当前GPS位置 一种可能的解决方法是在后台运行测试应用程序,并在测试用例中与该应用程序通信,但如果可能的话,我希望避免这种情况。TL;博士: 示例项目: 测试的原则是您控制环境,因此对于测试,您应该使用预定义的位置之一,或者将您的位置之一放入.gpx文件: 例如: <?xml version="1.0"?> <gpx version="1.1"> <wpt lat="50.12108905423" lon="39.92

能否在UITest测试用例中获取手机/模拟器的当前GPS位置

一种可能的解决方法是在后台运行测试应用程序,并在测试用例中与该应用程序通信,但如果可能的话,我希望避免这种情况。

TL;博士: 示例项目:


测试的原则是您控制环境,因此对于测试,您应该使用预定义的位置之一,或者将您的位置之一放入
.gpx
文件:

例如:

<?xml version="1.0"?>
<gpx version="1.1">
<wpt lat="50.12108905423" lon="39.9260224404235">
</wpt>
</gpx>
  • 并将其作为构建阶段应用:
  • 这样,在开始UITests之前获得几秒钟的位置信息,但是如果你能忍受这几秒钟的延迟,这个解决方案应该适合你


    示例项目

    假设您可以控制应用程序代码,而不仅仅是测试用例代码:

    • 在应用程序本身中实现位置跟踪
    • 暴露电流/ 通过跟踪类“public”具有时间戳的最后一个已知位置 (静态?)方法
    • 除了要测试的功能之外,还可以在测试用例中访问它

    这会降低测试用例的健壮性,但会使您获得所需的行为

    您可能应该模拟设备位置,以便为您的测试用例找到一个已知的位置testing@Paulw11我们已经使用GPX文件进行了这项工作,但我想知道给定时刻的确切位置。将CoreLocation导入到XCUI测试中,设置一个CLLOCATIONMANAGER并开始跟踪那里的位置?@alexkent不起作用。在我的测试中,它从来没有显示权限提示。不,我想没有,XCUI测试目标没有显示UI…也许你可以绕过它,制作一个与XCUI测试目标具有相同捆绑Id的助手应用程序。助手应用程序只请求位置权限;你启动它一次,接受许可,然后再次运行真正的应用程序测试?不知道这是否可行:这将是一种选择。我认为在我的情况下,尽可能准确地定位是很重要的。这就是为什么我希望在UITest中获得与普通应用程序中的LocationController类似的位置。如果这是不可能的(或没有其他答案),我会接受这个解决办法。哦,对不起,我忘了提那个。我没有访问应用程序代码的权限。
    #!/bin/bash
    
    latitude="$(CoreLocationCLI -format \"%latitude\")"
    longitude="$(CoreLocationCLI -format \"%longitude\")"
    
    echo "<?xml version=\"1.0\"?>
    <gpx version=\"1.1\">
    <wpt lat=${longitude} lon=${latitude}>
    </wpt>
    </gpx>" > generated.gpx