2013-05-09 2 views
2

Я просто настраиваю тесты приложений с помощью OCUnit для моего проекта iOS и пытаюсь выяснить, что делать с аутентификацией. Мое приложение имеет принудительный экран входа, где пользователь должен пройти аутентификацию с Facebook до входа в основное приложение. Когда пользователь решает выполнить аутентификацию, он выталкивает их в Safari, передает их через последовательность проверки подлинности, управляемую Facebook, а затем возвращает их обратно в приложение (с дальнейшими шагами регистрации, если они являются новым пользователем).Обход входа/аутентификации в тестах OCUnit

Что я пытаюсь выяснить, как я могу получить тест приложения, чтобы пройти экран входа?

Один из вариантов, который я рассмотрел, представляет собой новую конфигурацию сборки (например, «Тест»), которая добавляет макрос препроцессора (например, «TEST = 1»), который я могу обнаружить в своем коде. Тогда только для этой тестовой конфигурации я мог бы заменить свой обычный код входа FBTestSession, который не требовал бы, чтобы приложение выходило в Safari. Тем не менее, было бы неплохо, если бы был вариант уборщик ...

Вот FBTestSession документация: https://developers.facebook.com/docs/reference/ios/3.0/class/FBTestSession/

Заранее спасибо!

ответ

2

Я могу думать о двух путях, связанных с обнаружением времени выполнения, существует ли среда тестирования.

В коде входа вы можете проверить, выполняете ли вы тесты. И если вы, не продолжайте:

BOOL runningTests = NSClassFromString(@"SenTestCase") != nil; 
if (runningTests) 
    return; 

Другой способ заключается в использовании другого приложения делегат для тестов, которые почти ничего не делает. В main.m:

@autoreleasepool { 
    BOOL runningTests = NSClassFromString(@"SenTestCase") != nil; 
    Class delegateClass = runningTests ? [TestingAppDelegate class] : [AppDelegate class]; 
    return UIApplicationMain(argc, argv, nil, NSStringFromClass(delegateClass)); 
} 

Преимущество первого способа в том, что это быстро & легко. Преимущество второго метода заключается в том, что он тщательный, дающий вам полный контроль над вашим приложением во время тестирования.

+0

Спасибо, тест для SenTestCase - это именно то, что мне нужно. Работает отлично. – phatmann

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

  • Нет связанных вопросов^_^