Ich habe wenig Erfolg üben Test getrieben Entwicklung mit asynchronen Swift 2.0-Code in Xcode 7. Die einzigen Lösungen, mit denen ich jeden Erfolg gehabt haben, sind gekünstelt und hacky Verzögerung Mechanismen, die die Notwendigkeit für waitForExepectationsWithTimeout (). Ich möchte asynchrone Tests wie folgt ausführen, aber dieser Code konsequent scheitert: Thread 1: EXCBADACCESS (code1, address0x6) Wenn die Erwartung erfüllt ist (expectation. fulfill ()) außerhalb des asynchron durchgeführten Abschlusses, wird dieser Test als übergeben Erwartet (solange ich die Erfüllung innerhalb der Schließung kommentieren). Aber das macht offensichtlich den Zweck, die Testauswertung zu synchronisieren. Ich werde bemerken, dass, obwohl der Test fehlschlägt, die ausgeführte Meldung ausgegeben wird, wie erwartet wird. Auch, wenn ein breakpoint auf dem waitForExpectationsWithTimeout eingeführt wird. Zeile, der Test erfolgreich, der Test gelingt, wenn eine künstliche Schlafverzögerung eingeführt wird. Dies führt mich zu glauben, dass waitForExepectaionsWithTimeout () wartet überhaupt nicht. Zugegebenermaßen bin ich neu bei Xcode und Swift, also wenn ich etwas offensichtlich fehlt, würde ich mich sehr über Feedback freuen. Was ist falsch mit meinem obigen Code Gibt es irgendwelche Umgebungsvariablen, die ich zur Verfügung stellen kann, um zu helfen, das Problem zu debuggen Asynchronen Aufruf mit XCTestExpectation. Der folgende Code funktioniert (der Test ist erfolgreich), wenn das completionHandler vor dem angegebenen 1-Sekunden-Timeout ausgeführt wird. Allerdings, wenn die completionHandler nicht aufgerufen wird und daher die Erwartung nicht erfüllt, anstatt einen Testfehler beim Aufruf von waitForExpectationsWithTimeout Ich bekomme eine EXCBADACCESS, die nicht sehr handlich ist, da dies macht es unmöglich, die gesamte Test-Suite Ergebnisse zu sehen. Wie kann ich dies vermeiden und erhalten eine normale Test-Fehler gefragt, Dec 21 14 at 15:31
Comments
Post a Comment