2010-12-16 13 views
12

He creado un objetivo de prueba de la unidad iOS para realizar pruebas lógicas siguiendo los pasos que se proporcionan en la documentación de Apple.¿Es posible probar un proyecto de biblioteca estática con el SenTestingKit de XCode?

Sin embargo, mi generación falla y me sale el siguiente error:

Undefined symbols:
"_OBJC_CLASS_$_MyClass", referenced from: objc-class-ref-to-MyClass in LogicTests.o ld: symbol(s) not found collect2: ld returned 1 exit status

ordinaria, si se quería utilizar mi biblioteca estática dentro de una aplicación me gustaría incluir el archivo library.A, y las cabeceras (incluyendo el Archivo MyClass.h ...). ¿Se requiere algo adicional para ejecutar pruebas lógicas en una biblioteca estática DENTRO de ese mismo proyecto si mis casos de prueba están utilizando MyClass.h?

Tjhanks

+0

Buena pregunta. Mala respuesta, señor. La verdad es que, debido a la naturaleza de una biblioteca estática, no puede realizar pruebas de aplicaciones. – Daniel

Respuesta

2

que en realidad sólo lo resolvió. Tuve que copiar todos los archivos .m en mi proyecto a 'Fuentes de compilación' del objetivo de LogicTest. Además de agregar los marcos, las fuentes hacen referencia a la sección 'Enlace binario con bibliotecas' del objetivo.

espero que esto ayuda a otros

+2

En realidad, para una biblioteca estática, es mejor que no incluya sus fuentes en su objetivo de prueba. Tienes que agregar tus archivos .m si no estás trabajando con una biblioteca estática. –

+0

Jon, eso es un poco confuso, ¿puedes estar un poco más claro? ¿Por qué estarías mejor? –

+0

Es un dolor porque cada vez que creas un nuevo archivo, debes recordar agregarlo a dos objetivos. Xcode le permite mantener su código de prueba separado del código bajo prueba, vinculando el primero al último. –

2

Sí, Xcode 4.2 tiene una plantilla para Cocoa Touch biblioteca estática con pruebas.

+1

¡Sip! Lamentablemente, solo parece apoyar las pruebas lógicas. –

+0

Por favor, compruebe mi respuesta: http://stackoverflow.com/a/11267670/662605 – Daniel

12

Debido a la naturaleza de las bibliotecas estáticas, no se puede realizar pruebas de aplicación , que por el sonido de la misma es lo que estás tratando de hacer Sin embargo, puede realizar pruebas lógicas.

Tiene razón en su observación acerca de las pruebas unitarias en la aplicación cliente.

La plantilla de Xcode incluye opcionalmente pruebas unitarias, pero si va a la configuración de compilación para esa prueba unitaria, verá que no especifica un host de prueba o un cargador de paquetes. Esto se debe a la naturaleza de las bibliotecas estáticas. No son aplicaciones, son bibliotecas, por lo que puede hacer pruebas lógicas, no puede hacer pruebas de aplicación.

Pruebas de aplicación puede que desee realizar en su biblioteca estática pueden incluir el siguiente escenario:

My library creates an SQLite database at runtime, I wish to perform a unit test to check everything is inserting and/or updating as expected.

Con el fin de probar esto con las pruebas unitarias, hay que crear otra aplicación que incluye o de otra manera es dependiente de su biblioteca. Esta aplicación incluye su biblioteca y las pruebas de la aplicación pueden configurarse allí.

Cuestiones relacionadas