wenderlich unit underlying tutorial test for cannot ios xcode unit-testing

unit - wenderlich ios



Cómo probar la extensión de una aplicación en Xcode 6 (2)

Acabo de encontrarnos con problemas similares tratando de probar una extensión por unidad. Independientemente hizo exactamente lo mismo que el autor intentó con Bundle Loader apuntando a la ruta .appx sin éxito, por supuesto. Realmente no me gustó la idea de crear un marco de trabajo separado solo para las pruebas, así que terminé de agregar una fuente comprobable en el objetivo de la prueba de extensión. Es realmente sencillo si no tiene demasiados archivos de origen en su extensión:

  1. Seleccione su objetivo de prueba de extensión en la configuración del proyecto
  2. Ir a construir fases
  3. Expandir las fuentes de compilación
  4. Haga clic en +
  5. Agregue archivos de origen con su código comprobable.
  6. Construir para Pruebas

Por qué funciona:

Una vez que agregue fuentes de extensión a su objetivo de prueba de extensión, XCode hará una doble referencia a cada una de ellas y compilará tanto la compilación de extensión normal como la compilación de prueba, eliminando así los problemas de enlace.

¿Hay algún inconveniente?

Tendrá que sincronizar manualmente la lista de archivos de origen en el destino de prueba de extensión. Siempre que agregue / elimine archivos en la extensión de destino, es posible que deba hacer lo mismo en su prueba de destino.

¿Alguien sabe cómo realizar pruebas de unidad en el destino de extensión de la aplicación, especialmente en el objetivo de extensión de teclado?

¿Qué he intentado (en el objetivo de prueba de unidad):

  • En el toque "General", establezca su destino en el destino de la extensión en lugar de la aplicación del contenedor.
  • Establezca "Bundle Loader" en la ruta del binario de la extensión de destino, que se parece a $(BUILT_PRODUCTS_DIR)/com.mycompany.keyboard.appex/com.mycompany.keyboard
  • Establezca el "Host de prueba" en $(BUNDLE_LOADER) .
  • En la pestaña "Fases de creación", configure las "Dependencias de destino" tanto para la aplicación contenedora como para la extensión.

Después de hacer estas cosas, puedo compilarlo con éxito, pero siempre Test target SogouInputTests encountered an error (Test session exited(1). without checking in. If you believe this error represents a bug, please attach the log file at /tmp/TestStatus-UXfvxw.log) "Fallo en la prueba" con un registro. Test target SogouInputTests encountered an error (Test session exited(1). without checking in. If you believe this error represents a bug, please attach the log file at /tmp/TestStatus-UXfvxw.log) .

Estoy usando Xcode 6 beta 3.


He reportado el error a Apple. Y, lamentablemente, la respuesta es que la extensión del teclado no es compatible con la prueba de unidad ahora. La respuesta viene de Apple:

  • Actualmente no se admite la ejecución de pruebas unitarias dentro de una extensión de la aplicación
  • En su lugar, factorice el código que desea probar en un marco y pruebe el código allí
  • Enlace el marco en su extensión