Импорт и использование инфраструктуры 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
И успешно (казалось бы) скачал и построил фреймворки
Настроить Cartfile
Запустите обновление Carthage - которое построило 3 фреймворка (Mac, iOS, tvOS), то есть SnapshotTesting.framework и связанные с ними файлы SnapshotTesting.framework .dSYM.
Затем, пытаясь включить это в цель тестирования моего приложения для iOS, я выполнил следующие действия
Перетащите файл iOS SnapshotTesting.framework в раздел "Фазы сборки" - связать двоичные файлы с библиотеками
Добавлены / usr / local / bin / carthage copy-frameworks с
Входные файлы $(SRCROOT)/Carthage/Build/iOS/SnapshotTesting.framework
Выходные файлы $(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/SnapshotTesting.framework
Я убедился, что в моих путях поиска Runpath (на вкладке "Настройки сборки") есть -> @loader_path/Frameworks
Я бегу Xcode 10.1
Я не уверен, что это проблема с
Настройка Карфагена
Фреймворк SnapshotTesting
Мои настройки сборки в Xcode
Или ограничение с динамическими стихами статических рамок?
Я пробовал несколько вариантов расположения файлов ввода / вывода, запуская Runscript до и после бинарного раздела ссылок
Кто-нибудь знает эту проблему, Есть ли другие параметры сборки, которые необходимо изменить, чтобы это работало.
1 ответ
Задача решена
Во-первых, не перетаскивайте созданный карфагеном фреймворк в Test Target / Build Phases (вкладка) Link Binary With Libraries (раздел). Вместо этого используйте кнопку "+" и "Добавить другое", перейдя к.../Carthage/Build/iOS и выберите нужный файл фреймворка. Удалите файл.framework, если вы ранее перетащили его (и он скопировал его в каталог)
Во-вторых, добавьте раздел "Новые файлы копирования" на вкладке "Фазы сборки" (последний шаг) с назначением фреймворков. Снова используйте кнопку +, чтобы выбрать SnapshotTesting.framework в Carthage / Build / iOS. Удалите этап запуска сценария - с помощью - "/usr/local/bin/carthage copy-frameworks", если вы ранее добавили его.
Спасибо ребятам на www.pointfree.co
- И последнее замечание: после этого я получил ошибку сборки:"Модуль, скомпилированный с помощью Swift 4.2, не может быть импортирован компилятором Swift 4.2.1:" в тестовом примере xcTest, где я пытался импортировать SnapshotTesting. Эта проблема была вызвана тем фактом, что я запускал Xcode 10.1 - Но на вкладке "Настройки и коды Xcode" в раскрывающемся списке "Инструменты командной строки" был выбран Xcode 10.0. Подозреваю, это означало, что, когда Carthage генерировал модули инфраструктуры, он использовал более старую версию в версии Swift несоответствие?