Почему ложное утверждение в async-тесте в GHUnit приводит к краху приложения, а не просто к неудаче теста?

У этого вопроса очень мало просмотров и пока нет ответов. Если у вас есть предложения, что изменить в этом вопросе, чтобы привлечь больше внимания, я буду рад их выслушать. Будьте здоровы!

Я использую GHAsyncTestCase для тестирования моей пользовательской NSOperation. Я устанавливаю тестовый пример в качестве делегата на объект операции и вызываю didFinishAsyncOperation на главном потоке, когда она завершена.

Когда утверждение терпит неудачу, оно выбрасывает исключение, которое должно быть поймано тестовым примером, чтобы тест был признан "неудачным". Но вместо этого ожидаемого поведения, мое приложение прерывается Xcode, как только утверждение терпит неудачу.

*** Завершение работы приложения из-за не пойманного исключения 'GHTestFailureException', причина: ''NO' должно быть TRUE. Это должно вызвать неудачный тест, но вместо этого приложение завершается.'

Я явно делаю что-то не так. Кто может мне подсказать?

@interface TestServiceAPI : GHAsyncTestCase
@end

@implementation TestServiceAPI

    - (BOOL)shouldRunOnMainThread
    {
        return YES;
    }

    - (void)testAsyncOperation
    {
        [self prepare];

        MyOperation *op = [[[MyOperation alloc] init] autorelease];

        op.delegate = self; // delegate method is called on the main thread.

        [self.operationQueue addOperation:op];

        [self waitForStatus:kGHUnitWaitStatusSuccess timeout:1.0];
    }

    - (void)didFinishAsyncOperation
    {
        GHAssertTrue(NO, @"This should trigger a failed test, but crashes my app instead.");

        [self notify:kGHUnitWaitStatusSuccess forSelector:@selector(testAsyncOperation)];
    }

@end

11
задан epologee 7 October 2011 в 12:01
поделиться