Estoy tratando de elegir entre OCUnit y Caja de Herramientas Google, ¿tiene alguna preferencia, recomendaría uno o el otro, ¿por qué? estaría muy interesado en escuchar acerca de sus experiencias con cualquiera de los 2.Prueba de la unidad y TDD, OCUnit vs Caja de Herramientas Google
El principal problema que tengo con ambos es la gerencia de los accidentes en los métodos ensayados (ex: ACCESO BAD) ninguno de ellos fue capaz para decirme en qué clase ocurrió el accidente !!!
con la caja de herramientas Google puedo ver qué conjunto de pruebas estaba siendo dirigido pero no es el caso de prueba (¿cómo se supone que debe hacer cuando el banco de pruebas tiene 50 casos de prueba?)
Con OCUnit al menos puedo ver qué caso de prueba en qué suite de prueba causó el bloqueo.
Aquí es el tipo de mensaje que tengo con GTB:
Executed 0 tests, with 0 failures (0 unexpected) in 0.000 (0.000) seconds
Test Suite 'LogicTests' started at 2009-12-14 18:03:15 +0100
/Users/admin/Documents/Tests/GTBTest/RunIPhoneUnitTest.sh: line 122: 688 Segmentation fault "$TARGET_BUILD_DIR/$EXECUTABLE_PATH" -RegisterForSystemEvents
Command /bin/sh failed with exit code 139
puedo ver que es el conjunto de pruebas que LogicTests '' que originaron el accidente, pero eso es todo.
Con OCunit aquí es el mensaje para el mismo error:
Test Suite 'LogicTests' started at 2009-12-14 17:51:26 +0100
Test Case '-[LogicTests testFail]' started.
/Developer/Tools/RunPlatformUnitTests.include: line 415: 536 Segmentation fault "${THIN_TEST_RIG}" "${OTHER_TEST_FLAGS}" "${TEST_BUNDLE_PATH}"
Al menos con OCUnit i puede realizar un seguimiento de lo que caso de prueba se está ejecutando y, finalmente, depurarlo (pero que podría tomar un tiempo muy largo sin ningún la clase y la información de número de línea ...)
¿cómo hacer frente a estos problemas?
Gracias de antemano.
PS: aquí es cómo reproducir el problema, es muy simple:
Basta con crear una clase con un método que se bloquea cuando se llama (que pasa todo el tiempo cuando estás haciendo TDD):
- (void) crashMethod {
NSMutableArray *crashArray;
[crashArray addObject:[NSObject new]];
}
y luego crear un caso de prueba que llama a este método:
- (void) testFail {
ClassToTest *test = [[ClassToTest alloc] init];
[test crashMethod];
[test release];
}
gracias de antemano, Vicente
@ user142764: ¿Cómo pruebas de unidad de depuración con GTB entonces? ¿Seguramente todavía necesitas un ejecutable personalizado? – jkp
No, eso es genial con GTB: ¡ya que usa un objetivo normal para ejecutar sus pruebas, puede depurarlo! Simplemente escriba una prueba, ponga un punto de interrupción dentro, luego simplemente ejecute Ejecutar-> Depurar en el menú y allí está: está depurando su prueba paso a paso. – user142764