2008-08-28 13 views
324

¿Qué marcos existen para probar la unidad código Objective-C? Me gustaría un framework que se integre muy bien con Xcode.¿Cuál es la mejor manera de probar la unidad código Objective-C?

+0

Que yo sepa, las respuestas aquí son obsoletas. Apple ahora tiene XCTest, que lo ayuda a resolver este problema. Creo que la mayoría de las respuestas necesitan ser actualizadas. – Honey

Respuesta

310

Xcode incluye XCTest, que es similar a OCUnit, un marco de prueba de unidad Objective-C, y tiene soporte total para ejecutar pruebas de unidades basadas en XCTest como parte del proceso de compilación de su proyecto. El soporte de prueba unitaria de Xcode se describe en el Xcode Overview: Using Unit Tests.

En los Xcode 2 días, me escribió una serie de entradas del blog acerca de cómo realizar algunas tareas comunes con unidad de Xcode prueba:

A pesar de usar OCUnit en lugar de XCTest, los conceptos son básicamente los mismos.

Finalmente, también escribí algunas publicaciones sobre cómo escribir pruebas para las interfaces de usuario de Cocoa; la forma en que está estructurado Cocoa lo hace relativamente sencillo, porque en la mayoría de los casos no tiene que girar un bucle de evento ni nada de eso.

Esto hace que sea posible hacer desarrollo basado en pruebas no sólo para el código de nivel de modelo, sino también su nivel de control e incluso a nivel de la vista código.

+5

Peter Hosey también dio una buena presentación sobre Pruebas de unidad de cacao en la reunión Cocoaheads de Lake Forest, CA en diciembre. Aquí hay un video: http://vimeo.com/2725498 –

+1

Cuando comencé a usar iOS hace aproximadamente un año, encontré que OCUnit tenía (para mí) un serio inconveniente: no podía ejecutarlo en el simulador o dispositivo. Puede haber cambiado desde entonces. No lo he comprobado, pero he estado usando GHUnit simplemente por ese motivo. – drekka

+1

¿Hay algún video oficial de desarrollador de Apple sobre este tema? Pasé por WWDC 2011 y 2010 pero no pude encontrar ningún ... extraño, ya que las pruebas son importantes, ¿sí? – Robert

18

Comencé a usar la plataforma de prueba Google toolbox para iPhone, y funciona muy bien para mí.

google-toolbox-for-mac

50

Salida GHUnit por Gabriel Handford:

"Los objetivos de GHUnit son:.

pruebas unitarias se ejecuta dentro de XCode, lo que permite que le permite utilizar plenamente el XCode Depurador Una interfaz gráfica de usuario sencilla para ayudar usted visualice sus pruebas. Muestre las trazas . Se instalable como un marco (para aplicaciones Cocoa) con una configuración de destino simple (o no), o fácil de empaquetar en su iPhone pr oject ".

+5

+1 para GHUnit! Soy nuevo en el desarrollo de iPhone y honestamente puedo decir que tuve GHUnit en funcionamiento sin problemas (las instrucciones son perfectas) en comparación con la pesadilla absoluta de OCUnit y la leve migraña de GTM. ¡GHUnit gana por facilidad de uso y facilidad! –

+3

Tenga en cuenta que esta respuesta y los comentarios que la acompañan fueron escritos hace algún tiempo. Xcode ahora es mucho más compatible con las pruebas basadas en OCUnit, lo que facilita la configuración de las pruebas y su ejecución en el depurador. –

+2

En realidad, hace tiempo que pasé a Kiwi para pruebas unitarias. –

12

Tenga en cuenta que el proyecto Google Toolbox para Mac (GTM) simplemente amplía/aumenta el marco SenTestingKit de Apple (que, en sí mismo, se basa en OCUnit).Como dicen en el sitio del proyecto:

GTM tiene varios mejora a la SenTestingKit estándar que permite a hacer las pruebas unitarias de interfaz de usuario, automatizado vinculante unidad de pruebas, seguimiento de la madera, y la unidad de prueba en el iPhone, como así como herramientas para hacer pruebas estáticas y dinámicas de su código.

Nota el siguiente comentario acerca de las pruebas de interfaz de usuario:

GTM tiene un buen soporte para el usuario pruebas de unidad de interfaz. Es compatible con probando el estado interno de imágenes y/o de casi todos los objetos UI Cacao/UIKit estándar, y hace que sea más fácil extender este soporte a sus propios objetos UI.

Consulte la página "Code Verification and Unit Testing" para obtener instrucciones sobre cómo usarlo.

10

También recomendaría usar herramientas de cobertura para ver qué parte del código está cubierto con pruebas de unidad y cuáles no. La cobertura básica de línea y código de sucursal se puede generar con la herramienta GCOV. Si desea generar buenos informes de cobertura HTML, hay LCOV y ZCOV que hacen precisamente eso.

12

llegué a la conclusión de que GHUnit es el marco de pruebas más avanzada para Objective-C. He hecho un roundup de marcos de prueba en mi blog. Es el más flexible en términos de implementación (iphone, simulador o mac os nativo) y capacidades de afirmación. Debido a que está basado en GTM, hereda todas las ventajas de GTM sobre SenTestingKit pero también agrega muchas más. Otra ventaja es que se mantiene de manera muy activa.

He realizado un esfuerzo para integrar OCMock en GHUnit, ¡funciona genial !. Puede obtener el código en github.

4

Uso SimpleUnitTest funciona con las librerías de iPhone y iPad.

http://cbess.blogspot.com/2010/05/simple-iphone-ipad-unit-test.html

Viene con una plantilla de Xcode prueba unitaria para agregar fácilmente una clase de prueba de unidad. Wraps GTM.

Puede literalmente colocarlo en un proyecto activo y comenzar a agregar pruebas unitarias en 3 minutos (o menos).

+0

Er ... ¿se supone que falla tan pronto como lo ejecutas? – quantumpotato

+0

Por supuesto que no ... A menos que falle una prueba. –

12

Me doy cuenta de que esta es una pregunta antigua, pero si prefiere las pruebas de estilo BDD (rspec, Jasmine, etc.) sobre xUnit-style testing (Test :: Unit, JSUnit, JUnit, etc.), entonces puede considerar retirar Cedar. Cedar trae pruebas de estilo BDD a Objective-C, ahora que el lenguaje admite cierres.

Estamos felices de usar Cedar para nuestros proyectos iOS en Pivotal Labs, y estamos trabajando activamente para mejorarlo. Cualquier comentario o sugerencia son bienvenidos en [email protected]

5

Yo sugeriría mirar en el kiwi, una BDD marco de pruebas de código abierto para iOS: Kiwi

salida WIKI del proyecto para iniciar o conseguir el libro de Daniel Steinberg "prueba de conducción iOS Desarrollo con kiwi" test-driving-ios-development

+0

Kiwi también es compatible con OS X, consulte https://github.com/allending/Kiwi/wiki/Up-and-Running-with-Kiwi-for-Mac – dbainbridge

+0

La página de inicio de Kiwi GitHub se ha trasladado a https://github.com/ kiwi-bdd/Kiwi – jk7

0

Espero que pueda usar 'SenTestKit', desde el cual puede probar todos y cada uno de los métodos.

3

Specta es un moderno marco TDD (desarrollo impulsado por prueba)/BDD (desarrollo conducido por comportamiento) que se ejecuta sobre XCTest. Admite pruebas unitarias para proyectos iOS y Mac OS X.

Cuestiones relacionadas