2013-04-15 3 views
1

Использование встроенной среды тестирования, предоставляемой Xcode, есть ли какой-либо способ для кода приложения определять, выполняется ли он тестовым бегуном, а не работает как приложение?Используя инфраструктуру модульного тестирования Xcode, может ли код приложения определять, выполняется ли он как единичный тест?

Другими словами, мне интересно, можно ли сделать что-то вроде этого в коде приложения:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
    // ... 

    if (IsUnitTestRunning()) { 
     [self useDefaultSettings]; 
     [self showDefaultViewController]; 
    } 
    else { 
     [self restoreUserSettings]; 
     [self restoreUserInterface]; 
    } 

    // ... 
} 

Я знаю, что я мог бы создать новую конфигурацию, которая определяет некоторые прекомпилятора макросы и установите Xcode схему для создания и использования этой конфигурации при запуске теста, или я мог бы установить какую-то глобальную переменную в своем приложении в YES при запуске теста, но мне интересно, есть ли что-то, встроенное в OCUnit или Xcode, для обработки этого.

ответ

1

На Macintosh существует способ передать некоторые параметры во время отладки с Xcode, которые превращают его в «int main(argc, argv)».

Я подозреваю, что на стороне iOS есть аналогичные функции. Вы должны уловить опционы, передаваемые через «int main(argc, argv)».

Вот где вы делаете изменения на стороне Xcode вещей:

Modify Your Xcode scheme a bit

Другой вариант может быть, чтобы посмотреть в опциях СЛОВАРЬ передали через «didFinishLaunchingWithOptions:» и посмотреть, если есть что-то другое о запуск с Xcode по сравнению с запуском его на устройстве или на симуляторе (без запуска с Xcode).

+0

Поймать вещи в 'main()' и/или параметрах среды настройки действительно работает с iOS. Также см. Главный ответ здесь: http://stackoverflow.com/questions/7274711/run-logic-tests-in-xcode-4-without-launching-the-simulator. (Я не могу найти способ установить содержимое словаря 'options', но это не совсем то, что я хочу сделать.) –

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

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