Существует ряд классов UIKit, которые просто не работают вне контекста работающего UIApplication.Например, создание всего, что пытается использовать UIFont (например, UILabel), будет беспорядочно взорваться (то есть ошибка сегментации или подобное) за пределами работающего UIApplication.UIActivityIndicatorView аналогично завершится с ошибкой.
На самом деле невозможно последовательно протестировать код, который зависит от UIKit вне симулятора или устройства.К счастью, вы можете запустить код, скомпилированный для симулятора, без фактического запуска процесса симулятора.Я полагаю, что настройка GTM для тестов iOS делает это;Я знаю, что Cedar делает это для спецификаций iOS.Я не достаточно знаком с GHUnit, чтобы сказать, может ли он это делать.
Если вы хотите запускать такие спецификации из командной строки, вам необходимо соответствующим образом установить некоторые переменные среды.Вам нужно установить DYLD_ROOT_PATH в каталог для iOS SDK, с которым вы связываете, IPHONE_SIMULATOR_ROOT в тот же каталог SDK, а CFFIXED_USER_HOME во что-то непустое (я использую случайный временный каталог).После того, как они установлены, вы можете выполнить двоичный файл, который вы создали для SDK симулятора, вызвав его напрямую и добавив -RegisterForSystemEvents в командной строке.
Например, вы можете проверить Cedar Rakefile (я больше всего знаком с этим, потому что написал его; другие не менее достоверные примеры могут существовать в GTM или GHUnit).Посмотрите на нижнюю часть файла в задаче: uispecs для командной строки, которую он запускает.