Импорт и использование инфраструктуры Swift SnapshotTesting с Карфагеном

У меня возникают проблемы с запуском xcTests после импорта инфраструктуры SnapshotTesting, доступной по адресу -> https://github.com/pointfreeco/swift-snapshot-testing

Сборка прошла успешно, но тест не пройден

Я всегда получаю "Символ не найден", говоря, что он должен найти его в....Frameworks/libswiftCore.dylib

например

2018-12-11 17:39:48.799290+1100 Life[38438:3178136] Не удалось загрузить тестовый пакет из файла:///Users/garrypugh/ Библиотека / Разработчик /Xcode/DerivedData/Life-cowbtmytjcqvmqgvgonauprqpbpa/Build/Products/Debug-iphonesimulator/Life.app/PlugIns/LifeTests.xctest/: Ошибка домена =NSCocoaErrorDomain Code=3588 "dlopen(/ Пользователи / garrypugh / Библиотека / Разработчик / Xcode / DerivedData / Life-cowbtmytjcqvmqgvgonauprqpbpa / Life-iphone / Debug / Debug-iphone / Products / Debim.app/PlugIns/LifeTests.xctest/LifeTests, 265): символ не найден: _$SSS8UTF8ViewVs8SeptionsWP Ссылка на: /Users/garrypugh/ Библиотека / Разработчик / Xcode / DerivedData / Life-cowbtmytjcqvmqgvgonauild-Bugs Products DebugPlayer.app / PlugIns/LifeTests.xctest/Frameworks/SnapshotTesting.framework/SnapshotTesting Ожидается в: /Users/garrypugh/ Библиотека / Разработчик /CoreSimulator/ Устройства /BA4AAED2-B310-4590-BCEB-AF28312A0B35/data/Containers/Bundle/ Приложение A7A23001-D0C6-47C9-ADED-F31A1136A0BB/Life.app/Frameworks/libswiftCore.dylib

Я следовал инструкциям Карфагена здесь ->

https://github.com/Carthage/Carthage

и здесь ->

https://github.com/Carthage/Carthage

И успешно (казалось бы) скачал и построил фреймворки

  1. Настроить Cartfile

  2. Запустите обновление Carthage - которое построило 3 фреймворка (Mac, iOS, tvOS), то есть SnapshotTesting.framework и связанные с ними файлы SnapshotTesting.framework .dSYM.

Затем, пытаясь включить это в цель тестирования моего приложения для iOS, я выполнил следующие действия

  1. Перетащите файл iOS SnapshotTesting.framework в раздел "Фазы сборки" - связать двоичные файлы с библиотеками

  2. Добавлены / usr / local / bin / carthage copy-frameworks с

    Входные файлы $(SRCROOT)/Carthage/Build/iOS/SnapshotTesting.framework

    Выходные файлы $(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/SnapshotTesting.framework

  3. Я убедился, что в моих путях поиска Runpath (на вкладке "Настройки сборки") есть -> @loader_path/Frameworks

Я бегу Xcode 10.1

Я не уверен, что это проблема с

  1. Настройка Карфагена

  2. Фреймворк SnapshotTesting

  3. Мои настройки сборки в Xcode

  4. Или ограничение с динамическими стихами статических рамок?

Я пробовал несколько вариантов расположения файлов ввода / вывода, запуская Runscript до и после бинарного раздела ссылок

Кто-нибудь знает эту проблему, Есть ли другие параметры сборки, которые необходимо изменить, чтобы это работало.

1 ответ

Решение

Задача решена

  1. Во-первых, не перетаскивайте созданный карфагеном фреймворк в Test Target / Build Phases (вкладка) Link Binary With Libraries (раздел). Вместо этого используйте кнопку "+" и "Добавить другое", перейдя к.../Carthage/Build/iOS и выберите нужный файл фреймворка. Удалите файл.framework, если вы ранее перетащили его (и он скопировал его в каталог)

  2. Во-вторых, добавьте раздел "Новые файлы копирования" на вкладке "Фазы сборки" (последний шаг) с назначением фреймворков. Снова используйте кнопку +, чтобы выбрать SnapshotTesting.framework в Carthage / Build / iOS. Удалите этап запуска сценария - с помощью - "/usr/local/bin/carthage copy-frameworks", если вы ранее добавили его.

Спасибо ребятам на www.pointfree.co

Этапы сборки

  1. И последнее замечание: после этого я получил ошибку сборки:"Модуль, скомпилированный с помощью Swift 4.2, не может быть импортирован компилятором Swift 4.2.1:" в тестовом примере xcTest, где я пытался импортировать SnapshotTesting. Эта проблема была вызвана тем фактом, что я запускал Xcode 10.1 - Но на вкладке "Настройки и коды Xcode" в раскрывающемся списке "Инструменты командной строки" был выбран Xcode 10.0. Подозреваю, это означало, что, когда Carthage генерировал модули инфраструктуры, он использовал более старую версию в версии Swift несоответствие?

Инструменты командной строки

Другие вопросы по тегам