2009-10-20 10 views
6

hereのようにアプリケーションテストを実装しようとしています。これまでのところ、とても良いですが、たとえば、コアロケーションを使用してデバイスの場所をテストすることはできません。私はターゲットに適切なフレームワークを追加し、場所の更新を開始しましたが、ロードする場所を待つ方法の手がかりがなく、テストスイートは2番目のスレッドが終了する前に終了します。このようなことをテストする方法を見つけるのを手伝ってください。そして、あなたがCLLocationmanagerデリゲートを設定し、startUpdatingLocationにそれを伝えるiPhone:アプリケーションテストとコアの場所

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

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

:あなたはCLLocationManagerに頼っている場合

+1

これで幸いです。私はそれを働かせることができませんでした... :-) –

+1

これは私が私のユニットテストで探しているものです。 applicationDidFinishLaunchingが呼び出される前にアプリケーションテストが開始されたようです。 –

+0

私は似たようなことをやろうとしており、その場所を模擬することを望んでいます。 –

答えて

1

あなたはCLLocationManagerDelegateにおけるこれら二つのデリゲートメソッドを実装することができます。 didUpdateLocationoldLocationがnilに設定されている)を取得した場合は、現在地があることを意味し、テストが成功したとみなすことができます(更新を無効にすることを確認してください)。あなたが他のものを手に入れたら、ロケーションマネージャのエラーがありました。

あなたはMapKitに頼っているとthis questionへの私の応答を見て、マップ(場所を持っているときに通知されるようにオブザーバセクション(observeValueForKeyPath)を実装し、その後、MKMapViewさんのユーザ位置更新メカニズムを使用している場合成功)、またはエラーがあった場合にMKMapViewDelegateのmapViewDidFailLoadingMapを通知して通知します。

+0

ラミン、申し訳ありませんが、私は自分自身を説明することができなかったようです。私の問題は、実際のアプリケーションの場所を取得する方法ではなく、アプリケーションをテストする方法です。私はもう一度やり直してみましょう: 例えば、私はapplicationDidFinishLaunching上でstartUpdatingLocationをトリガーするとしましょう:appDelegateをCLLocationManagerのデリゲートとして設定します。問題は、CLLocationManagerデリゲートがlocationManagerを受け取るかどうかをテストできるようにテストスイートを設定する方法です。didUpdateLocation:fromLocation:私が取得できた限り、デリゲートコールがトリガーされる前にテストが終了します。 ありがとう、 – ariel

+2

これはなぜ受け入れられましたか? –

関連する問題