2011-12-09 16 views
6

Tengo un problema muy furtivo en Xcode y su "Log Navigator".Pruebas OCUnit que fallan, pero Xcode Log Navigator dice No Issues

He recreado el problema como tal; Tengo una muy simple análisis de OCUnit:

-(void)testSimpleFailure{ 

    STFail(@"Please fail!"); 
} 

puedo limpiar mi construcción, construyo mi esquema de prueba y para ejecutar mis pruebas.

En la ventana de la consola de salida, veo ejecutar todas las pruebas, incluida la de arriba. La consola muestra la prueba de realidad corrió Y falló:

##teamcity[testFailed name='-|[SimpleTestClassTests.testSimpleFailure|]' message='Please fail!' details=''] 

Sin embargo, Xcode muestra el "Pruebas de superposición Sucedido" y el "Registro Navigator" de la izquierda dice que no hay problemas y todo es verde.

¿Alguien más ha tenido un problema similar? ¿Alguien sabe cómo resolver esto?

Me gustaría mucho no obtener un falso positivo antes de comprometerme.

Editado para aclarar mi pregunta.

Respuesta

11

Estoy ejecutando mis pruebas de aplicación y pruebas unitarias en un dispositivo. Estoy obteniendo los mismos resultados que usted: las pruebas están fallando, pero el Log Navigator dice que todo pasa. No solo eso, no puedo establecer puntos de interrupción en mi código.

La solución para mí fue "Editar Esquema ...", elegí el esquema de "Prueba" y cambié mi Depurador de "LLDB" a "GDB". Estoy usando Xcode 4.3.2, con mi compilador configurado para todos los objetivos a LLVM 3.1

Después de cambiar mi depurador para el esquema de prueba a GDB, The Log Navigator informa las fallas de prueba, y puedo establecer puntos de interrupción y depurar como bien mientras las pruebas se están ejecutando.

enlace: búsqueda de "Las pruebas unitarias accidente antes de ejecutar cualquier código" (bug LLDB) https://github.com/kstenerud/iOS-Universal-Framework

+2

Si pudiera darle más votos positivos, lo haría. He pasado todo el día golpeando mi cabeza contra esto. Funcionó en mi caso de prueba simple. Espero que el truco en el proyecto real mañana. – dar512

+0

Lo mismo aquí. El cambio a GDB lo solucionó. – magma

+0

+1. Cambié a GDB y ahora estoy viendo "Prueba fallida" –

0

Sí, he visto esto, intermitente y molesto.

Asegúrate de que el mensaje de registro superior (más reciente) esté seleccionado.

+0

Afortunadamente, cada uno de los registros de Log Navigator tiene una marca de tiempo, por lo que estoy seguro de que he seleccionado el registro correcto. –

+0

Sí, entiendo y sé que el error que mencionas es real, lo entiendo también. Puede ser bastante vergonzoso (y para Apple en ausencia) cuando tengo ese problema durante la demostración de TDD. :-) – zaph

+0

¿Cómo se soluciona esto? Esto ha estado sucediendo durante el último día. –

7

Ok, después de unos 3 desarrolladores de más de 5 días mirando este problema, se han encontrado una solución:

rm -rf Library/Application\ Support/iPhone\ Simulator 

O, como alternativa, si sopla lejos un árbol de directorios no es lo suyo:

Vaya a la aplicación del simulador de iOS. Elija iOS Simulator en el menú superior y seleccione "Restablecer contenido y configuración ..."

Aparentemente, algo se corrompe entre el simulador y Xcode, por lo que Xcode no puede engancharse al simulador para ver las pruebas. Xcode cree que no se realizaron pruebas, por lo tanto, las pruebas pasan.

Exactamente lo que causa esto, no estamos seguros, pero después de 5 días agotadoras y 1 solución más tarde, no nos importa porque nos dirigimos al bar más cercano.

Saludos.

+3

¿Ha visto este comportamiento al probar la unidad en el dispositivo? Mi "solución" fue establecer un punto de quiebre en la parte superior de la prueba que acababa de escribir y paso. ¿Has archivado un radar? Me gustaría engañarlo. – edelaney05

2

acabo de leer este largo post sobre el tema que también afecta a las aplicaciones de Mac:

http://masonmark.com/the-xcode-fairy/

El truco parece ser salir de Xcode y abrir el proyecto nuevamente. El error es intermitente y algunas veces estará aquí, o nunca estará aquí, y permanece en este estado hasta el próximo reinicio de Xcode.

Es una buena lectura también.

0

Lo que funcionó para mí: restablecer el simulador como se menciona por Nick L in his answer PLUS cerrando XCode y reiniciar. Entonces, cada compilación con STAssertTrue (falso) o STFail me dará un resultado negativo.

0

Si está utilizando XCTest, asegúrese de implementarlo en un simulador de iOS 7. Si implementa en iOS 6, dirá que la construcción tiene éxito, la prueba falla pero no proporciona ninguna información de registro en el depurador.

Cuestiones relacionadas