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, указывающими друг на друга