Вопрос был retagged для OS X, так что мой ответ уже не действует
Оригинальный ответ
Это невозможно. Основная причина в том, что тесты связаны с одним запущенным экземпляром приложения, они не имеют контроля над устройством, они работают как часть приложения. Вероятно, вы можете открыть URL-адрес, но вы не сможете вернуться в приложение и выполнить утверждение.
Также обратите внимание, что XCUnit является блоком тестирования . Вы не сможете написать в нее расширенный интеграционный тест. Вы, возможно, добились большего успеха в UI Automation, но этот конкретный тестовый пример будет очень сложным даже для него. Например, чтобы открыть ссылку вашим приложением в симуляторе, вы можете создать страницу HTML, которая будет перенаправляться на ссылку, а затем использовать оболочку для выполнения open testLink.html -a "iOS Simulator"
. Однако, по моему скромному мнению, подобные тесты ненадежны и очень трудно писать и отлаживать.
Мой совет будет:
- Написать тест модуля, который издевается
[UIApplication openURL:]
и убедитесь, что вы передаете правильный URL к нему. Или, если вы хотите другое направление, напишите единичный тест, который вызовет методы UIApplicationDelegate
в вызываемом порядке, имитируя открытие ссылки вашим приложением. Это как можно дальше с XCUnit.
- Проверьте остальные вручную.
Можете ли вы достичь того, что вам нужно с NSURLProtocol? –
Не могли бы вы перефразировать то, что вы подразумеваете под подпиской на схему URL? Вы имеете в виду, как вы определяете, какое приложение назначено для обработки конкретной схемы? Или вы имеете в виду, как вы проверяете, действительно ли openURL выполняет действие? –
Мое приложение зарегистрировано в схеме URL, подобной этой: myapp: //. Я хочу проверить, могу ли я открыть http://mywebsite.com в браузере, который будет перенаправлен на myapp: // в конце концов. – McZonk