iPhone:应用程序测试和核心位置

ari*_*iel 6 iphone cocoa-touch unit-testing ocunit

我正在尝试实现此处所述的应用程序测试.到目前为止,这么好,但我没有测试,例如,使用Core Location的设备的位置.我已经向目标添加了适当的框架,并启动了位置更新,但我不知道如何等待加载位置,测试套件在第二个线程完成之前就结束了.请帮我找一种测试这种东西的方法.

Ram*_*min 1

如果您依赖,CLLocationManager您可以在以下位置实现这两个委托方法CLLocationManagerDelegate

- (void)locationManager:(CLLocationManager *)manager 
    didUpdateToLocation:(CLLocation *)newLocation 
           fromLocation:(CLLocation *)oldLocation

- (void)locationManager:(CLLocationManager *)manager 
       didFailWithError:(NSError *)error
Run Code Online (Sandbox Code Playgroud)

然后您设置CLLocationmanager委托并告诉它startUpdatingLocation。如果你得到 didUpdateLocationoldLocation设置为零),这意味着你现在有了一个位置,你可以认为测试成功(确保你关闭更新)。如果您收到另一份,则存在位置管理器错误。

如果您依赖 MapKit 并使用 的MKMapView用户位置更新机制,请查看我对此问题的回答并实现观察者部分 ( observeValueForKeyPath) 以在地图有位置(成功)时收到通知或实现 MKMapViewDelegate 的mapViewDidFailLoadingMap如果出现错误,将得到通知。