it-swarm.com.ru

Ошибка XCTests на физическом устройстве: "Отмена тестов из-за тайм-аута ..."

XCTests терпят неудачу с сообщением: *** Canceling tests due to timeout in Waiting for test process to check in... Это только начало появляться в последние несколько дней. Я использую Xcode 7.3.1, с iOS 9.3.2, работающей на iPhone 6. Мое приложение написано в основном на Swift.

Я видел несколько похожих постов: 

  1. Невозможно запустить XCTests на устройстве iOS
  2. Тесты iOS не будут выполняться на симуляторе при использовании Jenkins через JNLP

Эти другие посты говорят об этой проблеме как возникающей с подписанием кода. Подписание кода, похоже, не является моей проблемой - я посмотрел на утилиту KeyChain Access и не вижу соответствующих сертификатов с истекшим сроком действия. Кроме того, что пока (очень временно) решает мою проблему, это перезагрузить мой iPhone. (К сожалению, это исправление не длится долго - может быть, несколько прогонов XCtests и проблема снова возникает). Я не управляю Дженкинсом, просто XCTests.

Я попытался перезапустить XCode и удалить все файлы/папки из папки DerivedData, но ни один из них не решает проблему.

Я сделал только что установил Xcode8 (первая бета-версия). Но помимо запуска его один или два раза, я обычно не использую его. Это кажется странным совпадением, что эта проблема возникает после того, как только что установил это.

Обновление от 25.06.16 

Я несколько сузил эту проблему. Несколько других симптомов появляются одновременно с проблемой тайм-аута: 

  1. Журнал консоли непосредственно из операторов print в файлах XCTest останавливается. 
  2. Ошибка таймера - это на самом деле корень проблемы. Мои тесты включают сначала ожидание некоторого взаимодействия с сервером, которое происходит. Но ожидание использует NSTimer, который никогда не выполняет свой обратный вызов. 
  3. Точки останова перестают работать.

Кажется, стоит отметить, что я запускаю эти XCTest вручную. То есть я запускаю каждый тест отдельно, поэтому каждый тест включает сборку.

Кроме того, до сих пор я проверил следующее:

  1. Перезапуск Xcode (не помогает)
  2. Перезапуск Mac OS X (не помогает)
  3. Удаление содержимого производных данных (не помогает)
  4. Перезагрузка iPhone-- помогает, но только снова позволяет запустить несколько тестов Xcode.
  5. Пробовал работать с Wi-Fi по сравнению с горячей точкой на iPhone (без изменений в выпуске)
  6. ТОДО: Бег с симулятором
  7. Может ли это быть проблема с кабелем или портом USB? Замена кабеля, соединяющего устройство, не помогает.
  8. Удаление приложения и переустановка/перестройка не помогают.
  9. Пробовал на другом оборудовании (iPad Air под управлением iOS 9.3.2). Те же проблемы.

Моя конфигурация: iOS 9.3.2, Xcode 7.3.1, Mac OS X 10.11.5 (15F34).

17
Chris Prince

Проблема заключается в том факте (или, скорее, в серьезной ошибке в xcodebuild), что время ожидания для подключения к серверу XCTest начинается в тот момент, когда вы запускаете команду xcodebuild. Время ожидания составляет 120 секунд, поэтому, если ваша компиляция + запуск симулятора занимает более 2 минут, xcodebuild выдаст ошибку «Отмена тестов из-за тайм-аута».

Решение состоит в том, чтобы разбить сборку на две команды. Один для сборки и один для запуска тестов:

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

Это решит проблему тайм-аута, потому что действие «тест без сборки» не должно компилироваться в первую очередь.

19
Werner Altewischer

У меня была такая же проблема с 7.3.1, iPad 9.3.3, Mac 10.11.6

Предоставление профилей в порядке и никаких проблем на этом фронте.

Принимая во внимание шаги, упомянутые OP, проблема исчезла после перезагрузки iPad и XCode дважды (в этом порядке). После перезапуска XCode мне пришлось отключить iPad и снова подключить.

Не пришлось удалять производные данные или перезагружать Mac.

Мой друг также сталкивался с подобными проблемами и обратился за технической поддержкой Apple, предоставив образец проекта. Служба технической поддержки Apple в ответ попросила его сообщить об ошибке

6
bharatmeda

У меня та же проблема с тобой. Я пытался всеми возможными способами, как ты . И до сих пор не найти причину, чтобы решить ее. Эта проблема, как причина Xcode8, но я не могу найти журнал устройства или сообщение об ошибке, чтобы подтвердить это.

обновление: Мои устройства iPhone6s (9.3.1 -> 9.3.2) iPhone5 (9.3.1 -> 9.3.2) Обе эти проблемы появляются Xcode Version 7.3 .1 (7D1014) Xcode-beta версии 8.0 (8S128D)

3
DaidoujiChen

Хотя я думаю, что ответ Вернера Альтевишера верен, всегда важно смотреть на самую раннюю ошибку, которую вы видите, а не на самую последнюю.

В моем случае я видел ошибку, которая была опубликована в вопросе, но до этого было много ошибок компиляции.

ех.

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')

В конце концов я понял, что обновил свою среду без обновления целевой версии XCode в TravisCI.

Изменение ...

osx_image: xcode8.3

чтобы ...

osx_image: xcode9.3

в моем .travis.yml исправил это для меня.

0
Dwayne Forde