¿Por qué una afirmación falsa en la prueba asincrónica en GHUnit bloquea la aplicación en lugar de simplemente fallar la prueba?

Esta pregunta tiene muy pocas vistas y aún no hay respuestas. Si tiene alguna sugerencia sobre qué cambiar con respecto a esta pregunta para obtener más ojos, me encantaría escucharlos. ¡Salud

Estoy usandoGHAsyncTestCase para probar una @ personalizaNSOperation mío. Estoy configurando el caso de prueba como delegado en el objeto de operación y estoy llamando adidFinishAsyncOperation en el hilo principal cuando está hecho.

Cuando una afirmación falla, arroja una excepción, que debería ser detectada por el caso de prueba para hacer que la prueba sea "fallida". Pero en lugar de este comportamiento esperado, Xcode anula mi aplicación tan pronto como la afirmación falla.

*** Finalización de la aplicación debido a la excepción no detectada 'GHTestFailureException', razón: '' NO 'debe ser VERDADERO. Esto debería desencadenar una prueba fallida, pero en cambio bloquea mi aplicación. '

Obviamente estoy haciendo algo mal. ¿Quién me puede decir?

@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

Respuestas a la pregunta(4)

Su respuesta a la pregunta