2012-06-05 1095 views
5

¿Hay alguna manera de detener la ejecución de una prueba de la unidad iOS una vez que falla el primer STAssert?SenTesting stop test after first STAssert failed

Por ejemplo, si tengo varias STAsserts:

STAssertTrue([myobject succeeded], @"failed"); 
STAssertNotNil(foo,@"bar"); 

me gustaría que si Xcode simplemente dejó de realizar los ensayos de después de la primera falla. Alguna forma de hacer esto?

Respuesta

1

Si tiene un Punto de interrupción de excepción establecido para todas las excepciones, Xcode lo lanzará al depurador en la primera prueba fallida. Si está ejecutando pruebas manualmente dentro de Xcode, esto podría ser aceptable.

Para configurar un punto de interrupción de excepción dentro de Xcode 4+

  1. Ver> Navegadores> Mostrar Breakpoint Navigator
  2. Haga clic en el botón + en la parte inferior izquierda de la ventana del navegador punto de interrupción, seleccione "Añadir punto de interrupción de excepción"
  3. Haga clic en "Listo" en el popover que aparece.

Xcode saltará al depurador en cualquier excepción encontrada en el tiempo de ejecución de la aplicación.

0

Si agrega el siguiente método a su clase de prueba, cualquier instrucción STAssert que falle detendrá la ejecución del método de prueba.

- (void)failWithException:(NSException *)anException{ 
    [super failWithException:anException]; 
    NSAssert(false, @"An assertion has failed"); 
} 
0

SenTestCase tiene un método que causa -[SenTestCase raiseAfterFailure]STAssert... a lanzar una excepción al finalizar, la prevención de la siguiente línea en la prueba de ejecución.

Esto se puede hacer sobre una base de prueba por prueba:

- (void)testSomeStuff 
{ 
    [self raiseAfterFailure]; 
    STAssertTrue([myobject succeeded], @"failed"); 
    STAssertNotNil(foo,@"bar"); 
} 

O a un nivel de clase:

- (void)setUp 
{ 
    [super setUp]; 
    [self raiseAfterFailure]; 
}