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, и второй раз, просто удалив мою цель и скопировав и вставив классы обратно в новую цель (неконструктивно, но в крайнем случае). Я могу сделать то же самое и в этот раз, но это пустая трата времени, и я боюсь, что это снова возникнет в будущем.

Это то, что я сделал до сих пор:

  1. Чистая папка сборки Xcode и удаленные производные данные, журналы устройств IOS и папки пользовательских данных.

  2. Перезапустил Xcode, Mac, а также мое устройство и симуляторы, а также откатанный репозиторий и обновление pod && pod install

  3. "Всегда вставлять быстрые стандартные библиотеки" как да

  4. Проверил, правильно ли выбрано мое целевое приложение

  5. Убедился, что в фреймворки 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, и это работает, никаких стручков не требуется