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.
Я видел несколько похожих сообщений:
Другие сообщения говорят об этой проблеме, возникающей при подписании кода. Подписание кода не похоже на мою проблему. Я просмотрел утилиту KeyChain Access и не вижу соответствующих сертификатов с истекшим сроком действия. Кроме того, что до сих пор (очень временно) исправление моей проблемы заключается в перезагрузке моего iPhone. (К сожалению, это исправление не длится долго - может быть, несколько прогонов XCtests и проблема снова возникает). Я не запускаю Jenkins, просто XCTests.
Я попытался перезапустить Xcode и удалить все файлы/папки из папки DerivedData, но ни одна из этих проблем не устраняет проблему.
Я просто установил Xcode8 (первая бета-версия). Но, не запустив его один или два раза, я обычно не использую его. Кажется странным совпадением, что эта проблема возникает после того, как она только что установила это.
Обновление 6/25/16
Я немного сузил этот вопрос. Несколько других симптомов появляются одновременно с проблемой тайм-аута:
- Консольное ведение журнала непосредственно из операторов
print
в файлах XCTest останавливается.
- Таймер сбой - на самом деле это корень проблемы. Мои тесты связаны с первым ожиданием взаимодействия с сервером. Но ожидание использует NSTimer, который никогда не выполняет обратный вызов.
- Точки останова перестают работать.
Кажется целесообразным отметить, что я запускаю этот XCTest вручную. То есть, я запускаю каждый тест отдельно, поэтому каждый тест включает сборку.
Кроме того, до сих пор я тестировал следующее:
- Перезапуск Xcode (не помогает)
- Перезапуск Mac OS X (не помогает)
- Удаление данных Derived Data (не помогает)
- Перезапуск iPhone - помогает, но только снова позволяет запускать несколько тестов Xcode.
- Пробовал работать с Wi-Fi против точки доступа на iPhone (без изменений)
- TODO: работа с симулятором
- Это может быть проблема с кабелем или USB-портом? Изменение кабеля, соединяющего устройство, не помогает.
- Удаление приложения и переустановка/перестройка не помогают.
- Пробовал на другом оборудовании (iPad Air работает под управлением iOS 9.3.2). Те же проблемы.
Моя конфигурация: iOS 9.3.2, Xcode 7.3.1, Mac OS X 10.11.5 (15F34).
Ответы
Ответ 1
Проблема заключается в том, что (или скорее: серьезная ошибка в xcodebuild), что тайм-аут для подключения к серверу XCTest начинается с момента выдачи команды xcodebuild. Тайм-аут составляет 120 секунд, поэтому, если ваша компиляция + запуск симулятора занимает более 2 минут, xcodebuild выдаст ошибку "Отмена тестов из-за таймаута".
Решение состоит в том, чтобы разбить сборку на две команды. Один для строительства и один для запуска тестов:
> xcodebuild clean build build-for-testing <other options>
> xcodebuild test-without-building <other options>
Это решит проблему с тайм-аутом, потому что действие "без проверки" не нужно сначала компилировать.
Ответ 2
У меня была такая же проблема с 7.3.1, iPad 9.3.3, Mac 10.11.6
Профили профилей прекрасны, и на этом фронте нет проблем.
Принимая намеки на шаги, упомянутые OP, проблема исчезла после перезапуска iPad и XCode дважды (в этом порядке). После перезапуска XCode мне пришлось отключить iPad и снова подключить его.
Не нужно было удалять Производные данные или перезагружать Mac.
Мой друг также столкнулся с подобными проблемами и попросил техническую поддержку Apple, предоставив образец проекта. Группа поддержки Apple Tech ответила, попросив его указать ошибку
Ответ 3
У меня с вами такая же проблема. Я пробовал все возможные способы, как вы.
И до сих пор не найти основную причину для ее решения. Проблема похожа на причину на Xcode8, но я не могу найти журнал устройств или сообщение об ошибке, чтобы подтвердить это.
обновление:
Мои устройства
iPhone6s (9.3.1 → 9.3.2)
iPhone5 (9.3.1 → 9.3.2)
оба они появляются в этом вопросе
Версия Xcode 7.3.1 (7D1014)
Xcode-бета версия 8.0 (8S128D)
Ответ 4
Это проблема, вызванная бесконечным циклом в вашем коде. У меня была такая же ошибка, но я удалил часть кода, вызвавшую проблему, и она работала нормально. xcode не дает вам много информации для работы. Некоторые причины могут быть глобальными var и singleton, указывающими друг на друга