Adición de objects ficticios al proyecto

Quiero agregar objects ficticios para testings en el proyecto, pero no quiero que se incluyan en mi compilation final. Entonces tengo mi class AppDelegate y allí en las importaciones:

 #ifdef TESTING #import "DummyBeaconLocationManager.h" #else #import "BeaconLocationManager.h" #endif 

Y después:

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { ... #ifdef TESTING [[DummyBeaconLocationManager shanetworkingInstance] startRanging]; #else self.beaconLocationManager = [BeaconLocationManager shanetworkingInstance]; [self.beaconLocationManager startRanging]; #endif return YES; } 

Pero el problema es que tengo que include esto en mi Target Membership , no en mi objective de testing. ¿Hay alguna manera de no include estos files en mi objective principal, pero solo en el objective de Test ?

Editar: Lo que hay que hacer es probar mi aplicación después del lanzamiento. Quiero probarlo en el simulador pero aplicación usando balizas. Así que he creado objects ficticios que representan balizas y simulan el administrador de la location. Cuando la aplicación comienza con la opción de PRUEBA, no comienza el range de la baliza, sino que coloca objects ficticios como una baliza.

Una vez que siga estos pasos, podrá agregar classs de testing con funcionalidad de testing a su compilation. Para ejecutar su aplicación utilizando la funcionalidad de testing, debe seleccionar el esquema de testing que se configura a continuación.

Configuración del proyecto Xcode (usando Xcode 7.0.1)

Para permitir que las importaciones condicionales y la funcionalidad sean efectivas para las testings, necesitará los siguientes ingnetworkingientes:

  1. Prueba de configuration
  2. Objetivo de testing
  3. Esquema de testing

Explicación breve de esquemas, destinos y configuraciones de compilation

  • Los esquemas apuntan a objectives y configuraciones.
  • Los destinos se pueden configurar con diferentes configuraciones de compilation.
  • Se pueden agregar configuraciones para ramificar los ajustes de compilation objective.

Estos son los pasos:

1. Duplicar una configuration para probar

Con el file de proyecto seleccionado en Project Navigator, siga estos pasos:

  1. Seleccione el objective del proyecto
  2. Seleccionar información
  3. Seleccione + para agregar una configuration

Duplicar una configuración de proyecto

  1. Seleccione la configuration duplicada de "debugging" Configuración duplicada de "depuración"

  2. Cambie el nombre de la nueva configuration y arrástrela para volver a orderar Renombrar la configuración del proyecto y arrastrar para reordenar

2. Duplicar un objective para probar

Ahora que tiene una configuration de testing, agregue un objective de testing. Con el file del proyecto, select en el browser del proyecto, siga estos pasos:

  1. Haga clic derecho o click Opción-clic en un objective existente, y select Duplicar. Duplicar un objetivo existente

  2. Toca el nuevo objective para cambiarle el nombre, luego arrástralo para reorderar tus objectives. Renombrar y arrastrar nuevo objetivo

3. Administrar esquemas

Ahora que tiene un objective y una configuration de testing, está listo para agregar un esquema que apunta al nuevo objective y la configuration.

  1. Toque en los esquemas (junto al button de detención) y select Administrar esquemas … Seleccione Administrar esquemas ...

  2. En la window emergente Administrador de esquemas, si ha elegido crear planes de autocreación, el nuevo esquema ya estará en la list. De lo contrario, puedes tocar + en la window emergente para agregar un esquema. Cada esquema se puede compartir, como se muestra aquí: Configurar nuevo esquema

  3. Toca el nuevo esquema para cambiarle el nombre y arrástralo para reorderar: Renombrar y reordenar esquemas

  4. Para editar el nuevo esquema, asegúrese de que esté seleccionado y toque Editar … Editar esquema

  5. En el panel de edición, select la configuration de compilation de testing Seleccione Probar configuración de compilación

  6. Asegúrese de que el esquema apunta al Objetivo de testing, tocando en el menu desplegable Ejecutable: Apunte a la prueba de destino para la acción de ejecución

  7. Asegúrese de que el esquema apunta a la configuration de compilation correcta, para otras acciones, como Prueba automatizada: Apunte al objetivo de prueba para la acción de prueba

4. Configura la configuration de compilation para tus objectives.

Ahora que tiene configurado su esquema de testing para apuntar a la configuration de testing, se comportará exactamente igual que la configuration de debugging, hasta que modifique la configuration de compilation. Sigue estos pasos para cambiar la configuration de compilation para tu configuration de testing:

  1. Para la mayoría de las configuraciones de compilation, hay una opción para cada configuration. Al elegir qué configuration usar en su configuration, asegúrese de que el objective principal esté seleccionado: Seleccionar objetivo principal

  2. Las macros del preprocesador se encuentran bajo la sección titulada 'Apple LLVM 7.0 – Preprocessing': Macros del preprocesador

  3. Toque en una fila, para seleccionarlo, toque la tecla Intro para editar y confirmar los cambios, use las teclas de flecha para moverse hacia arriba o hacia abajo. Es una buena práctica definir todas las macros de su preprocesador para todas las configuraciones, así: Definir macros de preprocesador

5. Agregue una class a su objective de testing

Ahora, el Esquema de testing apunta a una configuration que se comporta de manera diferente a la configuration de Depuración. Ahora debería ser capaz de seleccionar el esquema de testing en el menu desplegable de esquemas y ejecutar su configuration de testing.

Puede modificar la membresía objective de una class de una de dos maneras.

  1. Cuando crea un nuevo file, el tercer panel donde puede elegir la location, tiene opciones en la parte inferior, para cada objective:

Elija membresía objetivo

  1. Cuando selecciona un file en su Navegador de proyectos, el Inspector de files tiene un panel de Membresía de destino donde puede realizar modificaciones: Modificar membresía objetivo

Esquemas

Los esquemas generalmente se combinan para crear configuraciones. Una buena práctica es tener un esquema / configuration para cada audiencia que necesite una versión diferente de su compilation. Aquí hay algunas audiencias básicas que normalmente necesitan configuraciones separadas:

  • Desarrollador> DEBUG
  • Desarrollador> PRUEBAS
  • Pruebas internas> DESARROLLO
  • Beta Testers / Producción> APP STORE

Subsorting

Si desea modificar cualquier funcionalidad en el modo de testing, puede usar una subclass y solo agregar la subclass a su objective de testing.

Bien, si lo hice bien, deberías:

  • a) Cree un objective por separado para probar porporciones (como sugieren @Carl Veazey y @Rainer Schwarze) con casi la misma base de código que su objective principal.
  • b) Recomendaría burlarse de su administrador de location y faro
    objects a través de subclasss desde BeaconLocationManager y YourBeacon
    (por ejemplo). Entonces, solo anulas el comportamiento real con tu
    acciones específicas del simulador

Al final del día, su objective de testing solo contendrá 2 classs más (gestor de faro simulado y faro simulado) en comparación con el objective principal. No se realizaron cambios adicionales en la estructura del proyecto o en la semántica del código. Buena suerte.

Podría variar fácilmente estar equivocado en esto, pero supongo que esto podría funcionar:

Al igual que cuando se usan cocoapods, cuando se crea el file pod se anula la selección del objective (Nombre del proyecto). ¿Qué pasa si lo hace, luego select el objective (Project NameTests)

introduzca la descripción de la imagen aquí