Подтвердить что ты не робот

Xcode 7 - генерация данных покрытия кода не выполнена

Когда я запускаю свои тесты, я получаю сообщение об ошибке:

Не удалось создать данные о покрытии кода.
Не удалось получить файлы данных профиля из "UIDevice".

введите описание изображения здесь

На консоли было напечатано предупреждение:

Время ожидания 120 секунд для загрузки тренажера, текущее состояние - 1.

В чем причина?

4b9b3361

Ответ 1

Если вы интегрируете свой проект с сторонней динамической структурой, вам может потребоваться добавить путь в ваши настройки сборки. Ищите → Настройки сборки → "Пути поиска пути Runpath" и убедитесь, что он содержит путь к структуре.

Я просто сам увидел эту точную проблему после того, как создал свой проект, чтобы использовать инфраструктуру, над которой работает моя команда. После обновления этой конкретной настройки проблема исчезла. В моем случае путь был идентичен тому, который я уже установил для параметра "Пути поиска в Ракурсе".

Ответ 2

Если вы используете cocoa pods, установите этот поток в репозитории Cocoapods: https://github.com/CocoaPods/CocoaPods/issues/5385#issuecomment-226269847

Это устранило мою проблему:

Копирование ответа @dfleming:

По какой-то причине кажется, что CocoaPods не добавляет "[CP] Embed Pods Frameworks" построить фазу для тестирования пользовательского интерфейса, когда создавая рабочую область проекта.

Я вручную добавил это, и тесты пользовательского интерфейса были снова запущены.

Эта фаза сборки должна запускать следующие script: (Заменить {YourProject} с вашим именем проекта)

"${SRCROOT}/Pods/Target Support Files/Pods-{YourProject}UITests/Pods-{YourProject}UITests-frameworks.sh"

Ответ 3

Я решил эту проблему, точно так же, как я решаю большинство этих проблем XCode:

  • удалите файлы проектов в DerivedData (Xcode>Preferences>Locations>DerivedData→, чтобы перейти туда)
  • Product>Clean
  • (удерживайте нажатой кнопку alt) Product>Clean Build Folder
  • Выйти из XCode
  • Перезапустить XCode
  • Удалите приложение с вашего устройства/симулятора

Повторите попытку. Если он все еще не работает, используйте еще один симулятор/устройство для нескольких прогонов. Рано или поздно он снова будет работать на оригинальной.

Ответ 4

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

  • Попробовал перезапустить Xcode и симулятор после очистки и удаления приложения, которое никогда не срабатывало.

  • Затем я перезапустил Mac, как было предложено, но это все еще не сработало.

  • Затем я выбрал новое устройство для тестирования в симуляторе, ранее использовал 5 с и переключился на 6, и это сработало.

Интересно, что когда я переключился на симулятор iPhone 6, он показал логотип Apple с панелью загрузки, прежде чем запускать приложение и работать.

При переключении на симулятор 5s он сделал то же самое, с панелью загрузки Apple, чего раньше не было, а затем сработало 5 секунд.

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

Ответ 5

Метод Cocoapods link_with может вызвать эту проблему!

Я получал ту же самую ошибку в xcode 7.2 - ни одно количество симуляторов или сбрасываний устройств, казалось, не очистило его. После полной перестройки моих целей UITest, хотя все было хорошо. Проведя много времени в массиве git diff файла .pbxproj, я нашел решение для своего проекта. Я не уверен, что он обращается к первопричине для всех, кто видит эту ошибку, но она определенно очищает меня.

Из информации о проекте ниже "цель развертывания" в "Конфигурации" будут перечислены все возможные конфигурации для вашего приложения. Разверните конфигурацию, которую вы пытаетесь запустить, и вы увидите список всех ваших целей. В моем случае cocoapods автоматически добавили базовую конфигурацию для UITest-цели:

введите описание изображения здесь

Установите значение none в раскрывающемся списке.
Затем в меню слева выберите свою UITest-цель, затем build phases Вам нужно будет удалить check pods manifest.lock link binary with libraries emebd pods frameworks и copy pods resources.

Наконец, зайдите в свой файл pod и проверьте, не упоминается ли ваша цель или цели UITest. В моем случае я указывал в верхней части моего podfile:

platform :ios, '8.4'
use_frameworks!

link_with 'My App', 'My UITesting Target' 

pod 'A Pod', '~> 1.0'

Вместо этого podfile должен отображать конкретные зависимости для каждой цели:

platform :ios, '8.4'
use_frameworks!

target 'My App', :exclusive => true do
    pod 'A Pod I want to use in my app', '~> 1.0'
end

Предполагая, что вы не используете какие-либо контейнеры в своих UITests, цель должна снова создаваться без ошибок и тестов будет выполняться!

Мое понимание корня этой проблемы состоит в том, что каждая цель UITest создает два отдельных пакета: один для приложения и один для UITest-контроллера. К сожалению, cocoapods link_with логика изменяет все указанные цели, чтобы ожидать pods.framework в своем комплекте. Сценарии фазы сборки добавляют фреймворк к набору приложений, но не к набору контроллеров UITest, поэтому, когда вы запускаете тесты, которые, как представляется, отсутствуют в пакетах UITest, и xcode прерывает установку.

Если вы использовали контейнеры в своих UITests, вы должны указать их таким же образом:

target 'My UITesting Target', :exclusive => true do
    pod 'Another Pod I want only for UITesting', '~> 1.0'
end

И при запуске pod install все должно правильно связываться.

Ответ 6

Одна из причин, по которой это может произойти, - это то, что приложение-хост, которое тестирует целевая аудитория, не связано с правильными зависимостями. Например, если вы тестируете фреймворк, убедитесь, что хост-приложение связано с этими фреймворками, а также встроено. введите описание изображения здесь

Ответ 7

Эта проблема также может возникать при использовании Cocoapods с каркасом, где отсутствуют некоторые зависимости. Например, если вы используете Framework A, и эта структура зависит от Framework B, но в подпроцессе Framework A зависимость не объявлена.

Ответ 8

Моя проблема была вызвана неправильной версией развертывания цели unittest. Протестированная версия развертывания приложения была 7.0, но unittest не был настроен правильно автоматически. Он был установлен в 10.0, тогда как моя версия симулятора была 8.4. Измените версию развертывания целевой версии UT на 8.0 в настройках сборки, а затем все проблемы исчезли.

Ответ 9

Один или несколько ваших симуляторов застряли. Единственное, что всегда помогает исправить это для меня, - это reset содержание и настройки симулятора в меню Simulator.

Reset Содержимое и настройки...

Примечание: это приведет к удалению всех данных приложения из симулятора.

Ответ 10

В моем случае я добавил файлы Swift в фреймворк, который был (до тех пор) чисто Objective-C. В тестовом комплекте не было никакого кода Swift.

Как только я добавил файл Swift в тестовый комплект, Xcode автоматически обновил некоторые параметры проекта, и ошибка исчезла.

Вы должны хранить файл Swift в тестовом комплекте, даже если он не содержит никакого кода. Либо Xcode, либо Cocoapods, очевидно, используют существование файлов Swift в тестовом комплекте, чтобы определить, следует ли запускать тесты в "быстром режиме".

Ответ 11

Я попробовал кучу этих решений без везения. Я отключил опцию Code Coverage в моей секции тестирования схемы, которая подавила ошибку, но тесты не выполнялись. Затем я заметил довольно много вещей в консоли NSLog. Где-то там он упоминал ссылку на структуру, которую я больше не использовал и не пытался загрузить.

Я искал приложение для него, а Build Settings → Other Linker Flags пытался загрузить фреймворк, которого больше не было.

Я удалил: -framework 3rd_party_libname

Затем тесты снова работали. Это сбивает с толку, но, пожалуйста, проверьте наличие сообщений NSLog. Я использовал XCode 8.3

Ответ 12

Коренной причиной является, вероятно, сбой симулятора. Проблемы с симулятором являются общими, особенно при первом запуске.

Если проблема возникает даже после успешного запуска и подключения симулятора, пожалуйста, напишите подробности об ошибке.

Чтобы запустить симулятор, мне часто приходится отменять первый запуск (после запуска Xcode чисто) и повторять попытку несколько раз.

Если это повторяемо, происходит в нескольких проектах и ​​сохраняется после перезапуска и очистки проектов, подумайте о том, чтобы отправить дефект Apple, если сообщество не может помочь.

Ответ 13

У меня была такая же проблема, но это было из-за наличия тестовой цели и переименования целевого приложения. Убедитесь, что у вас есть действующее приложение Host Application.

  • Выберите тестовую цель на странице проекта
  • На вкладке "Общие" должно быть поле выбора приложения-хоста
  • Выберите цель, которую вы хотите протестировать.

Ответ 14

После долгого времени, пытаясь понять это, выяснилось, что мне пришлось создать совершенно новую тестовую цель. Затем после перезагрузки устройства проблема не возобновилась.

Ответ 15

Я также столкнулся с такой же проблемой:

Пробовал следующие вещи для разных проектов:

1. Для проекта, где у меня были сторонние фреймворки, проблема заключалась в том, что тестовый пакет не может найти фреймворк во время выполнения. Для этого теста проверки целевого пути Пути поиска пути устанавливаются путем добавления $(PROJECT_DIR)/Frameworks (при условии, что вы держите свои фреймворки в этом месте). Он исправил мою проблему для этого проекта Вы можете посмотреть его ниже:

Project file -> Test target -> Build Settings -> Runpath Search Paths
  1. В другом рабочем пространстве, когда я сменил свое тестовое устройство на какой-нибудь другой симулятор или сам изменил его. это помогло.

  2. Перезагрузите xcode или вашу Mac-систему.

надеюсь, что это поможет u

Ответ 16

Пользователи Carthage:

Это случилось со мной после того, как я добавил новую фреймворк в свой файл Cartfile.

Я побежал carthage update, но забыл перетащить файл .framework из Finder в раздел Embedded Binaries в моей целевой программе!

Как только я это сделал, проблема исчезла.

(Обратите внимание, что это конкретный случай общей проблемы, упомянутой выше @Mustafa.)

Ответ 17

У меня была эта проблема на Xcode 8.3 на Sierra 10.12.4

Я открыл приложение Keychain Access на своем Mac

Через несколько секунд у меня появилось несколько всплывающих окон, запрашивающих мой пароль, для предоставления разрешений для элементов Keychain.

Я ввел свой пароль во всплывающие окна, а затем мои тесты начали работать.

Ответ 18

Шаги, которые работали в моем случае Удалите эту схему и нажмите "Управление схемой" → "Автоматическая генерация", разрешив проблему в моем случае.

Проблема вызвана установкой сертификата в симуляторе и в цепочке ключей

Ответ 19

Используя Xcode 9.1 с несколькими целями построения и стандартным компилятором, мы работали над тестированием пользовательского интерфейса, и я начал видеть эту проблему. Таким образом, вы, вероятно, ненавидите меня за этот ответ, и я полностью ожидаю, что он будет уменьшен, НО это действительно сработало для меня: мне пришлось полностью удалить Xcode и мой проект с моей машины, чтобы эта ошибка исчезла.

Я пробовал каждое предложение в этом потоке, несколько раз, пытался очистить файлы кеша, удалять производные данные, возиться с настройками сборки, обновлять файлы подкачки, чистить, восстанавливать после каждой попытки, чистить симулятор, вручную воссоздавать симуляторы в ' управлять устройствами ". После нескольких часов и часов разочарования все еще была полная загадка, почему эта машина не смогла построить наш тест UI. Казалось, что он отлично работает на других машинах и на нашем CI. В дополнение к элементам в этом потоке я вручную изменил файл pbxproj, чтобы установить все параметры, относящиеся к охвату кода, к" НЕТ".

Наконец, я был в 1 шаге от переформатирования всей машины. Я решил полностью удалить Xcode, следуя приведенным здесь предложениям: fooobar.com/questions/99632/....

В частности, я разбил нашу рабочую область, бросил все программы, удалил все перечисленные файлы, очистил контент и настройки с симулятора, удалил симулятор, выключил машину на 20 минут, вернулся, переустановил Xcode, клонировал репозиторий, и вуаля! Ошибка.

Надежда, которая решает проблему для кого-то. Это "ядерный" вариант, и вы никогда не должны этого делать, но, как я уже сказал, это единственное, что сработало для меня.

Ответ 20

Удалите папку с производными данными, одно решение для их всех.