2012-02-21 17 views
11

tengo secciones en mi código (por ejemplo en el AppDelegate.m) que no debe ser compilado para las pruebas unitarias, comoXcode: macros del preprocesador de código condicional debug/PRUEBA

#ifndef CONFIGURATION_TESTS 
// Code that should not be compiled in the Unit Tests 
#endif 

Los objetivos se establecieron por Xcode cuando selecciona 'agregar pruebas unitarias' cuando crea un nuevo proyecto. En el archivo de proyecto, he agregado el indicador CONFIGURATION_TESTS a las macros de preprocesador para MyAppTests Built-Target pero no para el objetivo de MyApp.

Esta fue la forma sugerida en muchas publicaciones que he encontrado.

Pero esto no funciona, porque (supongo) que el objetivo MyAppTests tiene el destino MyApp como una dependencia y porque AppDelegate.m se agrega al destino MyApp, se compila con la configuración de compilación MyApp y, por lo tanto, CONFIGURATION_TESTS no está definido.

En la unidad de prueba de archivos de la macro se define y se comporta como se esperaba (ya que los archivos de prueba solamente se construyen por los MyAppTests objetivo?)

¿Alguien sabe cómo hacer esto, pensé que esto sería una común problema ...

+1

tengo el mismo problema y no puedo averiguarlo – shawnwall

+0

"Esto no funciona: 1) CONFIGURATION_TEST ¿siempre es cierto? 2) ¿nunca es cierto? 3) funciona en la prueba unitaria pero no en la aplicación? 4) funciona en la aplicación pero no en las pruebas unitarias? (las mentes inquisitivas quieren saber ...) – geowar

Respuesta

11

Por fin he encontrado la respuesta a mí mismo: la clave es crear una nueva configuración de generación (permite llamar a esta configuración Prueba)

A continuación, configura los valores de la macro del preprocesador en consecuencia, por lo que para la configuración Depuración y Versión establece CONFIGURATION_TESTS = 0 y para las pruebas de configuración, establece CONFIGURATION_TESTS = 1

Finalmente edita el esquema Unit-Test para usar Testing as build configuración. Eso es todo: P

He escrito una detallada explicación paso a paso sobre mi blog

+0

pregunta tonta: ¿Por qué necesita CONFIGURATION_TESTS = 0 para configuraciones de compilación sin prueba? Dejé esta parte y todo pareció funcionar bien. –

3

es necesario establecer "CONFIGURATION_TESTS = 1", no sólo "CONFIGURATION_TESTS"

Cuestiones relacionadas