Ich stoße auf ein seltsames Problem, auf das ich noch nie gestoßen bin.Unit Testing in Xcode, wird die App ausgeführt?
Wenn Sie cmd + U ausführen, um Ihre Unit Tests (OCUnit zum Beispiel) zu starten ruft es tatsächlich die main.m, neu die appDelegate und führen Sie die App, als ob Sie cmd + R gedrückt hätten?
Ich frage nur, weil ich CoreData hinter diesem DataLayer verwende. Ich verspotte den DataLayer erfolgreich in meinen Tests, aber sobald ich eine getAll-Methode implementiert habe, die CoreData tatsächlich aufruft, wirft die app/xcode eine Ausnahme auf das verwaltete Objektmodell kann nicht Null sein. Was ich verstehe, aber ich habe nicht vor, die DataLayer-Klasse neu zu erstellen, und ich habe einen Breakpoint in meine MainViewController loadView-Methode gesetzt, wo sie die DataLayer getAll-Methode aufruft. Es sollte bei Tests keine Rolle spielen, da es sich um ein Scheinobjekt handelt, das aber scheinbar die reale Instanz aufruft.
Also zurück zu meiner Frage, beim Drücken von cmd + U führt es auch zuerst die App und dann die Tests?
Sehr schön, ich habe nie daran gedacht, einen anderen App-Delegierten zu ersetzen! Ich würde den Test vereinfachen, um nur '' BOOL runningTests = NSClassFromString (@ "SenTestCase")! = Nil; '' –
@JonReid Schöne Ergänzung. Ich habe nie daran gedacht, es auf diese Weise zu vereinfachen! – Sulthan
Für XCODE 5 - BOOL inTests = (NSClassFromString (@ "XCTest")! = Nil); – Pion