wake-up-neo.net

XCTests auf physischem Gerät schlagen fehl: "Abbrechen von Tests aufgrund von Zeitüberschreitung ..."

XCTests schlagen mit der folgenden Meldung fehl: *** Canceling tests due to timeout in Waiting for test process to check in... Diese Meldung wurde erst in den letzten Tagen angezeigt. Ich verwende Xcode 7.3.1 mit iOS 9.3.2 auf einem iPhone 6. Meine App ist hauptsächlich in Swift geschrieben.

Ich habe einige ähnliche Beiträge gesehen:

  1. XCTests können nicht auf iOS-Geräten ausgeführt werden
  2. iOS-Tests werden nicht auf dem Simulator ausgeführt, wenn Jenkins über JNLP verwendet wird

In diesen anderen Beiträgen wird dieses Problem als beim Signieren von Code auftretend bezeichnet. Die Codesignatur scheint nicht mein Problem zu sein. Ich habe mir das Dienstprogramm KeyChain Access angesehen und sehe keine relevanten abgelaufenen Zertifikate. Außerdem besteht das Problem, das ich (vorübergehend) behoben habe, darin, mein iPhone neu zu starten. (Leider hält dieses Update nicht lange an - möglicherweise werden einige XCtests ausgeführt, und das Problem tritt erneut auf.) Ich betreibe keine Jenkins, nur XCTests.

Ich habe versucht, Xcode neu zu starten und alle Dateien/Ordner aus dem DerivedData-Ordner zu entfernen, aber keines von beiden behebt das Problem.

Ich habe nur Xcode8 installiert (erste Beta-Version). Aber abgesehen davon, dass ich es ein- oder zweimal gestartet habe, verwende ich es im Allgemeinen nicht. Es scheint seltsamerweise ein Zufall zu sein, dass dieses Problem auftritt, nachdem Sie es gerade installiert haben.

Update 25.06.16

Ich habe dieses Problem etwas eingegrenzt. Mehrere andere Symptome treten gleichzeitig mit dem Timeout-Problem auf:

  1. Die Konsolenprotokollierung direkt von print-Anweisungen in den XCTest-Dateien wird gestoppt.
  2. Timers Fehler - das ist eigentlich die Wurzel des Problems. Bei meinen Tests warte ich zunächst auf eine Serverinteraktion. Das Warten verwendet jedoch einen NSTimer, der seinen Rückruf nie ausführt.
  3. Haltepunkte funktionieren nicht mehr.

Es scheint sich zu lohnen, anzumerken, dass ich diese XCTests manuell starte. Das heißt, ich führe jeden Test einzeln aus, sodass jeder Test einen Build umfasst.

Außerdem habe ich bisher folgendes getestet:

  1. Xcode neu starten (hilft nicht)
  2. Mac OS X neu starten (hilft nicht)
  3. Inhalt abgeleiteter Daten entfernen (hilft nicht)
  4. Ein Neustart des iPhone - hilft, lässt aber nur einige Xcode-Tests wieder zu.
  5. Versucht mit WLAN im Vergleich zu Hotspot auf dem iPhone zu laufen (keine Änderung am Problem)
  6. TODO: Laufen mit dem Simulator
  7. Könnte dies ein Kabel- oder USB-Anschlussproblem sein? Das Ändern des Verbindungskabels zum Gerät hilft nicht.
  8. Das Löschen der App und das erneute Installieren/Wiederherstellen helfen nicht weiter.
  9. Versucht auf unterschiedlicher Hardware (iPad Air mit iOS 9.3.2). Gleiche Themen.

Meine Konfiguration ist: iOS 9.3.2, Xcode 7.3.1, Mac OS X 10.11.5 (15F34).

17
Chris Prince

Das Problem liegt in der Tatsache (oder vielmehr in einem schwerwiegenden Fehler in xcodebuild), dass das Zeitlimit für die Verbindung zum XCTest-Server zu dem Zeitpunkt beginnt, an dem Sie den Befehl xcodebuild absetzen. Das Zeitlimit beträgt 120 Sekunden. Wenn Ihre Kompilierung und der Start des Simulators länger als 2 Minuten dauern, gibt xcodebuild den Fehler "Abbrechen von Tests aufgrund Zeitlimitüberschreitung" aus.

Die Lösung besteht darin, den Build in zwei Befehle aufzuteilen. Eine zum Erstellen und eine zum Ausführen der Tests:

> xcodebuild clean build build-for-testing <other options>
> xcodebuild test-without-building <other options>

Dadurch wird das Timeout-Problem behoben, da die Aktion zum Testen ohne Erstellen nicht erst kompiliert werden muss.

19

Ich hatte das gleiche Problem mit 7.3.1, iPad 9.3.3, Mac 10.11.6

Bereitstellungsprofile sind in Ordnung und in dieser Hinsicht kein Problem.

Das Problem wurde durch die von OP erwähnten Schritte behoben, nachdem iPad und XCode zweimal (in dieser Reihenfolge) neu gestartet wurden. Nach dem Neustart von XCode musste ich das iPad ausstecken und wieder einstecken.

Musste die abgeleiteten Daten nicht löschen oder den Mac neu starten.

Mein Freund hatte auch mit ähnlichen Problemen zu kämpfen und bat Apple um technischen Support, indem er ein Beispielprojekt lieferte. Das Apple Tech-Support-Team bat ihn, einen Fehler zu melden

6
bharatmeda

Ich habe das gleiche Problem mit dir. Ich bin so wie du ausprobiert worden. Und immer noch nicht die Ursache finden, um es zu lösen. Das Problem ist wie bei Ursache von Xcode8, aber ich kann kein Geräteprotokoll oder keine Fehlermeldung finden, um es zu überprüfen.

update: Meine Geräte iPhone6s (9.3.1 -> 9.3.2) iPhone5 (9.3.1 -> 9.3.2) beide erscheinen in dieser Ausgabe Xcode Version 7.3.1 (7D1014) Xcode-Beta Version 8.0 (8S128D)

3
DaidoujiChen

Auch wenn ich die Antwort von Werner Altewischer für richtig halte, ist es immer wichtig, den frühesten Fehler, den Sie sehen, und nicht den neuesten zu betrachten.

In meinem Fall wurde der in der Frage angegebene Fehler angezeigt, aber zuvor gab es zahlreiche Kompilierungsfehler.

ex.

Testing failed:
    '...' is not a postfix unary operator
    'count' is unavailable: there is no universally good answer, see the documentation comment for discussion
    Cannot convert value of type 'Int' to expected argument type 'IntMax' (aka 'Int64')
    Cannot convert value of type 'Int8' to expected argument type 'IntMax' (aka 'Int64')
    Cannot convert value of type 'Int16' to expected argument type 'IntMax' (aka 'Int64')
    Cannot convert value of type 'Int32' to expected argument type 'IntMax' (aka 'Int64')
    Cannot convert value of type 'UInt' to expected argument type 'UIntMax' (aka 'UInt64')
    Cannot convert value of type 'UInt8' to expected argument type 'UIntMax' (aka 'UInt64')
    Cannot convert value of type 'UInt16' to expected argument type 'UIntMax' (aka 'UInt64')
    Cannot convert value of type 'UInt32' to expected argument type 'UIntMax' (aka 'UInt64')

Irgendwann wurde mir klar, dass ich meine Umgebung aktualisiert habe, ohne meine Xcode-Zielversion in TravisCI zu aktualisieren.

Ändern...

osx_image: xcode8.3

zu...

osx_image: xcode9.3

in meinem .travis.yml wurde dies für mich behoben.

0
Dwayne Forde