2014-06-18 5 views
6

Ist es möglich, ein Makro in (Test-) Zieleinstellungen oder in der Testdatei .pch so zu definieren, dass es an die gesamte App weitergegeben wird?
Oder gibt es bereits ein Makro, das überprüft werden kann (aus dem Code), wenn wir einen Test durchführen?xctest - Präprozessormakro

zB:

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

Der Grund, dass ich will das etwas Code überspringen ist, behauptet, usw. während der Prüfung (ohne #define in der Haupt app Ich betreibe Tests PCH jedes Mal ändern zu müssen) .

Danke.

+1

Sie sind mit diesem Problem weiter gekommen. Ich möchte meinem Code einige Test-Fixtures hinzufügen. Aber ich möchte nicht, dass es im Produktionscode angezeigt wird. Einige Erweiterungen und Hilfsfunktionen. Derartiges? – ahalls

+0

Ich persönlich endete mit etwas ähnlich wie hier beschrieben: http://StackOverflow.com/A/15725328/727817. Eine weitere gute Option wäre die Einrichtung einer neuen Build-Konfiguration nur zum Testen http://StackOverflow.com/a/14718914/727817 –

Antwort

3

Es sieht so aus, als könnten Sie das auf sehr ähnliche Weise wie bei Objective-C machen. Der Swift-Compiler übernimmt den Befehlsschalter -D. Um dies an das Testen anzupassen, habe ich den Literal definiert, den ich nur in den Test Target Build Einstellungen wollte.

Anleitung:

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

Aktiviert diesen Code:

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

fand ich die Lösung in diesem Artikel auf transitioning to swift.

+0

Ich glaube, das funktioniert genauso wie die Festlegung einer '# define' innerhalb der .pch des Testziels, Dies betrifft nur die Testklassen, nicht aber die eigentlichen App-Klassen. Ich habe mit "Andere C Flags" getestet, aber vielleicht ist es anders für Swift. –