2009-10-20 13 views
6

Próbuję zaimplementować testy aplikacji zgodnie z opisem here. Do tej pory, tak dobrze, ale nie uda mi się przetestować, na przykład, lokalizacji urządzenia za pomocą lokalizacji głównej. Dodałem odpowiednie Framework do Target i zainicjowałem aktualizację lokalizacji, ale nie mam pojęcia, jak czekać na załadowanie lokalizacji, pakiet testów kończy się przed zakończeniem drugiego wątku. Pomóż mi znaleźć sposób na przetestowanie tego typu rzeczy.iPhone: Testowanie aplikacji i lokalizacja podstawowa

+1

Powodzenia z tym. Nie mogłem tego zmusić do pracy ... :-) –

+1

Tego też szukam przy testach jednostkowych. Wygląda na to, że testy aplikacji są uruchamiane przed wywołaniem metody applicationDidFinishLaunching. –

+0

Próbuję zrobić coś podobnego i mam nadzieję na kpiny z lokalizacji. –

Odpowiedz

1

Jeśli powołując się na CLLocationManager można wdrożyć te dwie metody powierzać CLLocationManagerDelegate:

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

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

Następnie ustawić delegata CLLocationmanager i poinformować go startUpdatingLocation. Jeśli uzyskasz didUpdateLocation (z oldLocation ustawionym na zero), oznacza to, że masz teraz lokalizację i możesz uznać test za sukces (upewnij się, że wyłączyłeś aktualizację). Jeśli pojawi się ten drugi, wystąpił błąd związany z lokalizacją.

Jeśli powołując się na MapKit i korzystania MKMapView dydaktycznego użytkownika lokalizacji mechanizm aktualizacji, a następnie spójrz na moje odpowiedzi na this question i wdrożenie sekcję obserwatora (observeValueForKeyPath) być powiadomiony kiedy mapa ma lokalizację (powodzenie) lub wdrożyć mapViewDidFailLoadingMap MKMapViewDelegate, aby otrzymać powiadomienie, jeśli wystąpił błąd.

+0

Ramin, przepraszam, wydaje się, że nie byłem w stanie się wytłumaczyć. Mój problem polega nie na tym, jak zdobyć lokalizację w prawdziwej aplikacji, ale jak przetestować aplikację. Pozwól mi spróbować ponownie: Powiedzmy na przykład, że wyzwalam startUpdatingLocation na applicationDidFinishLaunching: i ustaw appDelegate jako delegat CLLocationManager. Pytanie brzmi, jak ustawić zestaw testów, aby móc przetestować, czy delegat CLLocationManager otrzymuje menedżer locationManager: didUpdateLocation: fromLocation: O ile udało mi się uzyskać, test kończy się dopiero po uruchomieniu wywołań delegatów. Anythow, dzięki – ariel

+2

dlaczego to zostało zaakceptowane? –