iPhone:应用测试和核心定位

Posted

技术标签:

【中文标题】iPhone:应用测试和核心定位【英文标题】:iPhone: Application Testing and Core Location 【发布时间】:2009-10-20 18:08:48 【问题描述】:

我正在尝试按照here 的描述实施应用程序测试。到目前为止,一切都很好,但我无法使用核心位置来测试设备的位置。我已将适当的框架添加到目标,并已启动位置更新,但我不知道如何等待加载位置,测试套件仅在第二个线程完成之前结束。请帮助我找到一种方法来测试这种事情。

【问题讨论】:

祝你好运。我无法让它工作...... :-) 这也是我在单元测试中寻找的东西。看起来应用程序测试是在调用 applicationDidFinishLaunching 之前启动的。 我正在尝试做类似的事情,并希望模拟该位置。 【参考方案1】:

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

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

- (void)locationManager:(CLLocationManager *)manager 
       didFailWithError:(NSError *)error

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

如果您依赖 MapKit 并且正在使用 MKMapView 的用户位置更新机制,请查看我对 this question 的回复并实施观察者部分 (observeValueForKeyPath),以便在map 有位置(成功)或者实现 MKMapViewDelegate 的mapViewDidFailLoadingMap,如果有错误会得到通知。

【讨论】:

Ramin,对不起,我似乎无法解释自己。我的问题不是如何在真实应用程序中获取位置,而是如何测试应用程序。让我再试一次:例如,假设我在 applicationDidFinishLaunching 上触发 startUpdatingLocation:并将 appDelegate 设置为 CLLocationManager 的委托。问题是如何设置测试套件以能够测试 CLLocationManager 委托是否接收 locationManager:didUpdateLocation:fromLocation: 据我所知,测试只是在委托调用被触发之前结束。无论如何,谢谢

以上是关于iPhone:应用测试和核心定位的主要内容,如果未能解决你的问题,请参考以下文章

iphone 4s如何更改当前位置?

(iphone) 核心定位在室内的精度如何?

核心定位和辅助 GPS iPhone

iPhone测试中的核心数据问题

在 iPhone 模拟器问题中测试 GPS

iphone模拟器拒绝定位