Waitforexpectationswithtimeout Schnelles Beispiel


Ich habe wenig Erfolg geübt Test getriebene Entwicklung mit asynchronen Swift 2.0-Code in Xcode 7. Die einzigen Lösungen, mit denen ich hatte Erfolg hatte geplante und hacky Verzögerung Mechanismen, die die Notwendigkeit für waitForExepectationsWithTimeout (). Ich möchte asynchrone Tests wie folgt durchführen, aber dieser Code scheitert konsequent: Thread 1: EXCBADACCESS (code1, address0x6.) Wenn die Erwartung erfüllt ist (expectation. fulfill ()) außerhalb des asynchron ausgeführten Schließens, wird dieser Test als passieren Erwartet (solange ich die Erfüllung in der Schließung kommentiere). Aber so offensichtlich besiegt der Zweck der Synchronisation der Testauswertung. Ich werde feststellen, dass, obwohl der Test fehlschlägt, die ausgeführte Nachricht druckt, wie man erwarten würde. Auch wenn ein Haltepunkt auf der waitForExpectationsWithTimeout eingeführt wird. Line, der test folgt folglich, der test gelingt, wenn eine künstliche schlafverzögerung eingeführt wird. Das führt mich zu glauben, dass waitForExepectaionsWithTimeout () überhaupt nicht wartet. Zugegeben, ich bin neu bei Xcode und Swift, also wenn ich etwas offensichtliches vermisse, würde ich mein Feedback sehr schätzen. Was ist falsch mit meinem oben genannten Code Gibt es irgendwelche Umgebungsvariablen, die ich zur Verfügung stellen kann, um das Problem zu debuggen Running: OS X El Capitan 10.11 Beta (15A263e), Xcode 7.0 Beta (7A120f) gefragt am 21. August 15 um 20: 06I hatte das gleiche Problem. Das Update für mich schien das Timeout-Intervall zu erhöhen. Ich hatte ursprünglich ein Timeout-Intervall von 1 und erhöhte es auf 5 nur um auf der sicheren Seite zu sein. Scheint jetzt gut zu funktionieren. Im nicht sicher, wie lange Ihr asynchroner Anruf dauert, oder wenn Sie sich ein längeres Timeout-Intervall als 1 leisten können, aber es ist ein Schuss wert. Antwortete am 24 November 14 um 20:14 Ich habe versucht, in 50 Fällen hat es geholfen. Sie können in Code sehen, den ich gepostet habe, dass async gerade dispatchafter ist, das 0,5s wartet. Am Ende neige ich die Erwartung nach Warteblock und mache alle Behauptungen auch nach Warteblock. Also passiert nichts beim Warten, sondern erfüllt. Ndash Micha Hernas Nov 25 14 at 11:18 Swift hat besondere Schwierigkeiten, den korrekten Ausnahmestreckpunkt zu zeigen, wenn Verschlüsse im gleichen Umfang vorhanden sind. Ive gesehen das gleiche Problem in einer XCTestCase, die dispatchafter verwendet und sogar durch die Ausnahme Breakpoint war die gleiche Zeile wie waitForExpectationsWithTimeout der Testfall war zum Absturz wegen eines Downcast auf einem Nil-Objekt. Ich weiß, das ist nicht dein Fall, aber wann immer dies geschieht, schlage ich vor, die Aussagen eine Zeile zu einer Zeit zu entfernen und den Test nach jedem Ausbau zu führen. Wenn der Test nicht abstürzt, hast du den Täter identifiziert. Dies ist leider die beste Option zum Zeitpunkt dieses Schreibens, wenn Swift einen Ausnahme-Breakpoint auf einer Linie zeigt, die keinen Sinn macht, vor allem die berüchtigte Linie 0 einer Klasse, die man in Crash-Reporting-Tools sehen könnte. Lassen Sie uns wissen, wenn Sie Ihren Absturz herausgefunden haben.

Comments

Popular posts from this blog

Oversrading Forex Nachrichten

Geometrisch Brownian Bewegung Forex Handel

George Soros Forex Trader