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
。如果你得到didUpdateLocation
(oldLocation
设置为 nil),这意味着你现在有了一个位置,你可以认为测试成功了(确保你关闭更新)。如果您得到另一个,则存在位置管理器错误。
如果您依赖 MapKit 并且正在使用 MKMapView
的用户位置更新机制,请查看我对 this question 的回复并实施观察者部分 (observeValueForKeyPath
),以便在map 有位置(成功)或者实现 MKMapViewDelegate 的mapViewDidFailLoadingMap
,如果有错误会得到通知。
【讨论】:
Ramin,对不起,我似乎无法解释自己。我的问题不是如何在真实应用程序中获取位置,而是如何测试应用程序。让我再试一次:例如,假设我在 applicationDidFinishLaunching 上触发 startUpdatingLocation:并将 appDelegate 设置为 CLLocationManager 的委托。问题是如何设置测试套件以能够测试 CLLocationManager 委托是否接收 locationManager:didUpdateLocation:fromLocation: 据我所知,测试只是在委托调用被触发之前结束。无论如何,谢谢以上是关于iPhone:应用测试和核心定位的主要内容,如果未能解决你的问题,请参考以下文章