2016-03-01 2 views
1

Я новичок в iOS разработка. Я хочу писать тесты для приложения, который использует SDK, где метод Аутентифицировать имеет вид:iOS XCtest доступ к контроллерам App View/UI

(void)authenticate:(UIViewController *)presentingViewController clearCookies:(BOOL)clearCookies completionBlock:(AuthCompletionBlock)completionBlock. 

для аутентификации пользователя, встроенный веб-браузер должен открыть в UIViewController(принят в методе параметры). Может ли модуль тестировать доступ к пользовательскому интерфейсу приложения? Как я могу убедиться, что браузер открыт, пользователь аутентифицируется через пользовательский интерфейс приложения, а затем выполняется тестирование модуля.

+0

Для этого вы должны использовать макетные данные для подачи на ваш метод аутентификации. Модульные тесты не имеют доступа к ui. Однако есть фактические тесты пользовательского интерфейса, возможно, посмотрите на это. – hola

+0

Согласен с hola. Взгляните на запись тестов пользовательского интерфейса. Процесс действительно прост и плавный. Взгляните на него в действии: https://developer.apple.com/videos/play/wwdc2015/406/ –

ответ

0

Зависит от необходимости проведения модульных тестов или тестов пользовательского интерфейса.

  • Единичные испытания: быстрая. Последовательная. Они подтверждают шаг за шагом. Но они не идут от конца к концу.
  • UI тесты: Медленный. Хрупкое. Они подтверждают друг друга.

Для модульного тестирования вы не будете писать тесты, которые фактически вызывают браузер или взаимодействуют с ним каким-либо образом. Вместо этого вы должны написать тесты, которые будет вывести браузер, а тесты, имитирующие разные входы , возвратили из браузера.

Это работает до тех пор, пока вы уверены в обратном и исходящем сообщении. Если это так, нет необходимости проверять код Apple. Если нет, то вы можете write a spike solution понять сообщение.

+0

Мне действительно нужно написать модульные тесты, но для входа в систему мне нужно будет взаимодействовать с браузером вправо? Есть ли способ взаимодействия с браузером, не связанный с пользовательским интерфейсом (ввод пользовательских учетных записей и вход в систему)? Тесты Xcode UI, по-видимому, весьма ограничены для функциональных тестов. – SKFelix

+0

Что я имею в виду, модульные тесты не будут _actually_ регистрироваться через веб-страницу. Вы бы имитировали запуск и окончание. –

+0

Каков предложенный метод? Насколько разумно использовать внешние рамки для этого? скажем OCMock? – SKFelix

Смежные вопросы