Xcode 10 - UITests - причина: изображение не найдено
Я пытаюсь запустить UItests для моего приложения, но оно падает, как только оно загружается. Здесь ошибка.
2018-09-29 16:19:49.577151+1000 xxxUITests-Runner[6007:69633] (dlopen_preflight(/Users/Acc/Library/Developer/Xcode/DerivedData/xxx-bjuwemcifadxhlhgojgfktmmades/Build/Products/Debug-iphonesimulator/xxxUITests-Runner.app/PlugIns/xxxUITests.xctest/xxxUITests): Library not loaded: @rpath/libswiftContacts.dylib
Referenced from: /Users/Acc/Library/Developer/Xcode/DerivedData/xxx-bjuwemcifadxhlhgojgfktmmades/Build/Products/Debug-iphonesimulator/xxxUITests-Runner.app/PlugIns/xxxUITests.xctest/Frameworks/MapboxGeocoder.framework/MapboxGeocoder
Reason: image not found)
Я использую CocoaPods (1.6.0.beta.1) для установки моих фреймворков. Я использую Xcode10 с swift 4.2 и IOS 12. Git используется для контроля версий с другими разработчиками (возможно, есть конфликты?).
Мое целевое приложение отлично работает как на симуляторе, так и на реальном телефоне, как и мои юнит-тесты. Но моя цель UITest терпит неудачу, как только она запускается. Эта проблема возникает как на симуляторе, так и на реальной машине.
До этого было много сообщений по этому вопросу, но ни одна из них не помогла мне до сих пор. Раньше у меня было 2 изолированных вхождения, первый раз я решил, добавив зависимости в мой файл pod для модуля UITest, и второй раз, просто удалив мою цель и скопировав и вставив классы обратно в новую цель (неконструктивно, но в крайнем случае). Я могу сделать то же самое и в этот раз, но это пустая трата времени, и я боюсь, что это снова возникнет в будущем.
Это то, что я сделал до сих пор:
-
Чистая папка сборки Xcode и удаленные производные данные, журналы устройств IOS и папки пользовательских данных.
-
Перезапустил Xcode, Mac, а также мое устройство и симуляторы, а также откатанный репозиторий и обновление pod && pod install
-
"Всегда вставлять быстрые стандартные библиотеки" как да
-
Проверил, правильно ли выбрано мое целевое приложение
-
Убедился, что в фреймворки Embed Pod включена фреймворк-нарушитель (MapboxGeocoder.framework)
Ответы
Ответ 1
Поэтому через 5 дней мне удалось решить мою собственную проблему.
Я решил это, переместив мою цель UITests из области моего основного приложения в Podfile.
От:
target 'App' do
use_frameworks!
pods 'Firebase'
target 'AppUITests' do
pods 'Testingpod'
end
end
Для того, чтобы:
target 'App' do
use_frameworks!
pods 'Firebase'
end
target 'AppUITests' do
pods 'Testingpod'
end
Ответ 2
Нашел другое решение, предложенное в вопросе Cocoapods.
Поскольку мой проект - это фреймворк, то у теста нет хост-приложения.
Изменен Подфайл
target 'framework' do
use_ frameworks!
pods my_dependencies
target 'framework_tests' do
inherit! :search_paths
end
end
к
target 'framework' do
use_ frameworks!
pods my_dependencies
target 'framework_tests'
end
https://github.com/CocoaPods/CocoaPods/issues/8139
Ответ 3
Для меня я просто воссоздаю UITests Target, и это работает, никаких стручков не требуется