Cuando configuro nuevos proyectos, mi conjunto de herramientas actual es:
- Gestión de dependencias utilizando CocoaPods.
- Pruebas de unidad (y algo de integración) con Kiwi o Cedar. Actual Me gusta la integración de Kiwi con Xcode y una estructura de destino más simple, pero Cedar tiene mejores informes de prueba.
- OCMock para simulacros / trozos / expectativas si Kiwi no puede proporcionar el comportamiento que quiero.
- CI ejecutándose en Jenkins o TeamCity. He estado usando scripts de shell o tareas de rastrillo para realizar compilaciones a través de llamadas de línea de comandos, pero ambas herramientas de CI ahora tienen complementos que deberían poder hacer lo mismo y admitir la configuración desde sus IU web (http://confluence.jetbrains.net/ … y https://wiki.jenkins-ci.org/disp…).
- CI proporciona instalaciones inalámbricas de las compilaciones de desarrollo actuales a través de un servicio externo (como HockeyApp o TestFlight) o un servidor web interno que aloja las instalaciones de OTA. En la mayoría de los casos, este es un conjunto de varias compilaciones (con diferentes identificadores de aplicación) que se conectan a diferentes backends para que podamos ejecutar una combinación de entornos de desarrollo, aceptación, puesta en escena y producción según sea necesario.
- Pruebas funcionales con Frank, KIF o UIAutomation pero solo si resultan necesarias para el proyecto. Hasta ahora, he encontrado que las pruebas de unidad / integración pueden brindar una cobertura adecuada en la mayoría de los casos y, como resultado, la sobrecarga de configurar, escribir y ejecutar pruebas funcionales generalmente no vale la pena. Me gustaría ver una buena configuración para TDD externo de aplicaciones iOS, pero aún no he encontrado una.
Otras herramientas:
- Objeción por inyección de dependencia.
- AppCode para un mejor soporte de refactorización, generación de código y formato de código que Xcode ofrece actualmente, pero todavía no es un reemplazo completo para Xcode.
Intento evitar la necesidad de acoplar las compilaciones de aplicaciones de iOS a las compilaciones de los servidores de sus API mediante el uso de API versionadas y no es necesario tener un servidor en ejecución para ejecutar las pruebas. Siendo realistas, a veces necesitamos impulsar cambios coordinados, pero con los mismos desarrolladores trabajando tanto en el cliente como en el servidor, generalmente es fácil impulsar un cambio de servidor y luego impulsar una nueva versión del cliente.
- ¿Cómo puedo construir un compilador de iOS en línea?
- Cómo llamar a funciones nativas de iOS desde Unity
- ¿Quiénes son los mejores desarrolladores de iPhone en Canadá?
- Aplicaciones móviles: ¿Debo optar por el desarrollo nativo de iOS o el desarrollo multiplataforma con PhoneGap / Xamarin?
- ¿Necesito un motor de juego para hacer un juego de iPhone?