2014-06-18 24 views
6

È possibile avere una macro definita nelle impostazioni di destinazione (test) o nel file di prova pch in modo che venga passata all'intera app?
O c'è qualche macro già disponibile per controllare (dal codice) se stiamo facendo un test?xctest - macro preprocessore

es:

#if TEST=1 
    // do something 
#else 
    // do something else 
#endif 

Il motivo che voglio è quello di saltare alcuni codice, asserisce ecc durante il test (senza dover cambiare un #define nell'applicazione principale .pch ogni volta che viene eseguita test) .

Grazie.

+1

Hai ottenuto ulteriori informazioni con questo problema. Vorrei aggiungere alcuni dispositivi di prova al mio codice. Ma non voglio che compaia nel codice di produzione. Alcune estensioni e funzioni di supporto. Quel genere di cose? – ahalls

+0

Personalmente ho finito per usare qualcosa di simile come descritto qui: http://stackoverflow.com/a/15725328/727817. Un'altra buona opzione sarebbe impostare una nuova configurazione di build solo per testare http://stackoverflow.com/a/14718914/727817 –

risposta

3

Sembra che tu possa farlo in un modo molto simile a Objective-C. Il compilatore rapido accetta l'opzione di comando -D. Per adattarlo ai test ho definito il valore letterale che desideravo solo nelle impostazioni di Test Target Build.

Istruzioni:

Build settings for the Test Target -> 
     Swift Compiler Custom Flags -> 
     -DTEST (yes, including the -D prefix) 

consente di questo codice:

// Objective-C and Swift 
#if TEST 
// Test only code version code 
#else 
// App only code 
#endif 

ho trovato la soluzione a questo articolo sul transitioning to swift.

+0

Credo che funzioni allo stesso modo dell'impostazione di un '# define' all'interno del file .pch del target di test, che riguarda solo le classi di test, ma non le effettive classi di app. Ho provato a usare "Altri C Flags", forse è diverso per swift. –

Problemi correlati