2015-05-02 13 views
14

Próbuję napisać test akceptacji w KIF w aplikacji, która dość wcześnie prosi o lokalne uprawnienia do powiadamiania. Niestety ze względów bezpieczeństwa symulatora iOS: it isn't possible to automate accepting iOS permission alerts using KIF. Na numer https://stackoverflow.com/a/28443743/62 wygląda na to, że istnieją sposoby wyłączenia alertów uprawnień dotyczących lokalizacji, książki adresowej, kalendarza i zdjęć, ale nie udało mi się znaleźć sposobu na wyłączenie uprawnienia do lokalnego powiadamiania. Próbowałem podejścia opartego na uprawnieniach z połączonego pytania, ale nie działał żaden z następujących kluczy:Usuwanie alertu uprawnień do systemu iOS dla powiadomień lokalnych podczas uruchamiania aplikacji na symulatorze

kTCCServiceNotifications 
kTCCServiceNotification 
kTCCServiceLocalNotification 
kTCCServiceLocalNotifications 

Jakieś inne pomysły? Na razie pracuję nad tym, zmieniając mój kod produkcyjny, aby warunkowo wyłączyć lokalne powiadomienia, gdy testy akceptacyjne są uruchomione, ale najlepiej nie będę musiał.

+0

szybkie pytanie, gdzie znalazłeś te klucze? masz link? –

+0

Nie znalazłem tych kluczy, domyśliłem się ich, ale one nie działają. Jeśli spojrzysz na https://groups.google.com/forum/#!topic/kif-framework/xayP4VVBPyg zobaczysz klucze, które działają. –

Odpowiedz

2

Niestety, nie sądzę, że w teście automatyzacji jest dobry sposób na zrobienie tego. Wiem, że nawet zresetowanie symulatora czasami nie wystarczy, aby zresetować uprawnienia. Zaprojektowałbym twoje testy, aby nie testować wywołania systemowego, ale twój własny kod aplikacji.

Jednym ze sposobów testowania różnych funkcji w zależności od tego, czy użytkownik zezwala na powiadomienia, jest wyodrębnienie wywołania w celu sprawdzenia uprawnień, a następnie umieszczenie tej metody w testach. Ta metoda byłaby najlepszą praktyką, ponieważ celem nie jest testowanie, czy system iOS działa, ale jeśli kod aplikacji jest poprawny.

0
pozwolenie

Powiadomienie może być tłumione przez udzielanie zgody w applicationState.plist:

  • Uruchom aplikację na symulatorze, a następnie wybierz „OK” za jakiekolwiek pozwolenia popups
  • Przejdź do „~/Library/programisty /CoreSimulator/Devices/{$deviceId}/data/Library/BackBoard/applicationState.plist”
  • Wymień applicationState.plist symulatora testu UI z powyższym jednym ładowanie początkowe przed jej
Powiązane problemy