导入SnapshotTesting框架后,我在运行xcTests时遇到问题
-> 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/LifeTests.xctest/:
错误域= NSCocoaErrorDomain代码= 3588
“ dlopen(/Users/garrypugh/Library/Developer/Xcode/DerivedData/Life-cowbtmytjcqvmqgvgonauprqpbpa/Build/Products/Debug-iphonesimulator/Life.app/PlugIns/LifeTests.xctest/LifeTests,
265):找不到符号:_ $ SSS8UTF8ViewVs8SequencesWP引用
从:
/Users/garrypugh/Library/Developer/Xcode/DerivedData/Life-cowbtmytjcqvmqgvgonauprqpbpa/Build/Products/Debug-iphonesimulator/Life.app/PlugIns/LifeTests.xctest/Frameworks/SnapshotTesting.framework/SnapshotTesting
预期在:
/Users/garrypugh/Library/Developer/CoreSimulator/Devices/BA4AAED2-B310-4590-BCEB-AF28312A0B35/data/Containers/Bundle/Application/A7A23001-D0C6-47C9-ADED-F31A1136A0BB/Life.app/Frameworks/libswiftCoredy。
我在这里遵循了迦太基说明->
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
并成功(貌似)下载并构建了框架
设置购物车文件
运行迦太基更新-构建了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
我确保我的运行路径搜索路径(在“构建设置”选项卡中)具有-> @ loader_path / Frameworks
我正在运行Xcode 10.1
我不确定这是否是一个问题
迦太基设置
SnapshotTesting框架
我在Xcode中的构建设置
还是对动态与静态框架的限制?
我在输入/输出文件的位置上尝试了一些变体,在链接二进制节之前和之后运行Runscript
是否有人认识到这个问题?是否有其他需要更改的构建设置才能使它起作用。
最佳答案
问题解决了
首先,不要将迦太基生成的框架拖放到“测试目标/构建阶段”(选项卡)“链接二进制文件与库”(部分)中。而是使用+按钮,然后导航到... / Carthage / Build / iOS的“添加其他”,然后选择有问题的框架文件。
删除.framework文件(如果您以前已将其拖动(并将其复制到目录中))
其次,在“构建阶段”选项卡(最后一步)中添加带有框架目标的“新副本文件”部分。再次使用+按钮在Carthage / Build / iOS中选择SnapshotTesting.framework
如果以前已添加运行脚本阶段,则使用“ / usr / local / bin / carthage copy-frameworks”删除运行脚本阶段。
感谢www.pointfree.co的各位
Build Phases
最后一个问题-完成此操作后,我收到了xcTest测试用例中尝试导入SnapshotTesting的构建错误“使用Swift 4.2编译的模块无法通过Swift 4.2.1编译器导入:”。
此问题是由于我正在运行Xcode 10.1引起的-但是在Xcode Preferences / Locations选项卡中的Command Line Tools下拉列表中选择了Xcode 10.0-我怀疑这意味着当Carthage生成框架模块时,它使用的是较旧版本在Swift版本中不匹配?
Command Line Tools
关于ios - 导入和使用带有迦太基的Swift SnapshotTesting框架,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53719078/