Pytanie zostało retagged do OS X, więc moja odpowiedź nieważne jest
Original odpowiedź
To jest niemożliwe. Podstawową przyczyną jest to, że testy są połączone z jedną uruchomioną instancją aplikacji, nie mają kontroli nad urządzeniem, działają w ramach aplikacji. Prawdopodobnie możesz otworzyć adres URL, ale nie będziesz mógł wrócić do aplikacji i zrobić potwierdzenia.
Należy również zauważyć, że XCUnit jest jednostką testową jednostka. Nie będzie można w nim zapisać zaawansowanego testu integracji. Możesz być bardziej skuteczny dzięki Automatyzacji UI, ale ten konkretny przypadek testowy będzie bardzo skomplikowany, nawet w tym przypadku. Na przykład, aby otworzyć łącze przez aplikację w symulatorze, możesz utworzyć stronę HTML, która przekieruje cię do łącza, a następnie użyje powłoki do wykonania komendy open testLink.html -a "iOS Simulator"
. Jednak w mojej skromnej opinii tego rodzaju testy są niewiarygodne i naprawdę ciężko pisać i debugować.
Moja rada to:
- Napisz test jednostki, która drwi
[UIApplication openURL:]
i sprawdzić, czy są przechodzącą prawidłowy adres URL do niego. Lub jeśli chcesz w innym kierunku, napisz test jednostkowy, który wywoła metody UIApplicationDelegate
w kolejności wywoływanej, symulując otwarcie łącza przez twoją aplikację. To jest tak daleko, jak można przejść z XCUnit.
- Przetestuj resztę ręcznie.
Czy jesteś w stanie osiągnąć to, czego potrzebujesz dzięki NSURLProtocol? –
Czy mógłbyś przeformułować to, co masz na myśli przez "zasubskrybuj schemat URL"? Masz na myśli, w jaki sposób określasz, która aplikacja jest przypisana do obsługi określonego schematu? Czy masz na myśli, jak sprawdzić, czy openURL faktycznie wykonuje akcję? –
Moja aplikacja jest zarejestrowana w takim schemacie URL: myapp: //. Chcę przetestować, czy mogę otworzyć witrynę http://mywebsite.com w przeglądarce, która przekieruje mnie do myapp: // w końcu. – McZonk