Использование встроенной среды тестирования, предоставляемой Xcode, есть ли какой-либо способ для кода приложения определять, выполняется ли он тестовым бегуном, а не работает как приложение?Используя инфраструктуру модульного тестирования Xcode, может ли код приложения определять, выполняется ли он как единичный тест?
Другими словами, мне интересно, можно ли сделать что-то вроде этого в коде приложения:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// ...
if (IsUnitTestRunning()) {
[self useDefaultSettings];
[self showDefaultViewController];
}
else {
[self restoreUserSettings];
[self restoreUserInterface];
}
// ...
}
Я знаю, что я мог бы создать новую конфигурацию, которая определяет некоторые прекомпилятора макросы и установите Xcode схему для создания и использования этой конфигурации при запуске теста, или я мог бы установить какую-то глобальную переменную в своем приложении в YES при запуске теста, но мне интересно, есть ли что-то, встроенное в OCUnit или Xcode, для обработки этого.
Поймать вещи в 'main()' и/или параметрах среды настройки действительно работает с iOS. Также см. Главный ответ здесь: http://stackoverflow.com/questions/7274711/run-logic-tests-in-xcode-4-without-launching-the-simulator. (Я не могу найти способ установить содержимое словаря 'options', но это не совсем то, что я хочу сделать.) –