2014-02-11 4 views
1

Я выполняю модульные тесты SenTestKit в Xcode 5 (на самом деле это интеграционные тесты с KIF 2, но это то же самое). Эти тесты занимают много времени. Есть ли способ, чтобы весь тестовый пакет вышел из строя с первой неудачей теста?Как заставить Xcode 5 единичные тесты провалиться раньше?

ответ

1

Вы можете прервать тестирование при первой ошибке теста SetTestKit, вызвав [self raiseAfterFailure] в начале каждого тестового примера. Однако, это не работает для КИФ 2.

Я в конечном итоге подклассов SenTestObserver так:

@interface TestObserver : SenTestObserver 
@end 

@implementation TestObserver 

+ (void)load { 
    [[NSUserDefaults standardUserDefaults] setValue:@"SenTestLog,TestObserver" 
              forKey:SenTestObserverClassKey]; 
} 

+ (void)testCaseDidFail:(NSNotification *)notification { 
    // Fail fast 
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ 
     exit(1); 
    }); 
} 

@end 

Отредактировано добавить dispatch_after так что еще есть время, чтобы захватить результаты теста перед завершением тестового набора.

0

Вы можете просто использовать флаг, но в этом случае вам следует внимательно следить за элементами пользовательского интерфейса, когда вы тестируете KIF. Хорошим дополнением к KIF является метод, который возвращает true, если данный элемент существует. Если нужно, но он не устанавливает флаг. Тогда вы можете просто запустить все тестовые примеры с проверкой флага. Если вам нужна помощь в этом методе, просто спросите! :)