Импорт и использование инфраструктуры Swift SnapshotTesting с Карфагеном - PullRequest
0 голосов
/ 11 декабря 2018

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

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

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

например,

2018-12-11 17: 39: 48.799290 + 1100 Life [38438: 3178136] Не удалось загрузить тестовый пакет из файла: ///Users/garrypugh/Library/Developer/Xcode/DerivedData/Life-cowbtmytjcqvmqgvgonauprqpbpa/Build/Products/Debug-iphonesimulator/Life.app/PlugIns/LtestT::Код NSCocoaErrorDomain = 3588 ": _ $ SSS8UTF8ViewVs8SequenceWP Ссылка на: /Users/garrypugh/Library/Developer/Xcode/DerivedData/Life-cowbtmytjcqvmqgvgonauprqpbpa/Build/Products/Debug-iphonesimulator/Life.Life.jpgs.xctest / Frameworks / SnapshotTesting.framework / SnapshotTesting Ожидается в: / Пользователи / garrypugh / Библиотека / Разработчик / CoreSimulator / Устройства / BA4AAED2-B310-4590-BCEB-AF28312A0B35 / data / Containers / Bundle / Application / A7A23001-D96-ADED-F31A1136A0BB / Life.app / Frameworks / libswiftCore.dylib

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

https://github.com/Carthage/Carthage#if-youre-building-for-ios-tvos-or-watchos

и вот ->

https://github.com/Carthage/Carthage#adding-frameworks-to-unit-tests-or-a-framework

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

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

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

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

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

  2. Добавлены фреймворки / usr / local / bin / carthage с

    входными файлами $ (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 framework

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

  4. Или ограничение с помощью динамических стихов статических рамок?

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

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

1 Ответ

0 голосов
/ 12 декабря 2018

Проблема решена

  1. Во-первых, не перетаскивайте созданный карфагеном фреймворк в тестовую цель / фазы сборки (вкладка). Связать двоичные файлы с библиотеками (раздел).Вместо этого используйте кнопку «+» и «Добавить другое», перейдя к ... / Carthage / Build / iOS и выберите нужный файл фреймворка.Удалите файл .framework, если вы ранее перетащили его (и он скопировал его в каталог)

  2. Во-вторых, добавьте раздел «Новые файлы копирования» на вкладке «Фазы сборки» (последний шаг) с помощьюНаправление рамок.Снова используйте кнопку +, чтобы выбрать 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.несоответствие версии Swift?

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

...