我正在使用Core Data,当我的模型变得更复杂时,我需要确保我引入的新更改不会在其他部分意外地破坏我的模型。
我可以创建单元测试并在每次更改模型上的内容时运行它们。如果出现问题,我的模型可能有问题,或者至少我知道我必须在主代码/测试中修改一些查询。
我正在使用MagicalRecord来访问一些便捷方法。 出于同样的原因,我也使用cocoapods,方便。 问题是cocoapods创建了一个静态库并将其链接到我的目标,但在Xcode中,新的测试目标不会自动配置为链接到相关目标链接到的相同库/框架。
如何针对静态库建立XCTest链接?
这不仅有助于MagicalRecord / Core Data,但是当您使用外部库时,最好进行测试以确保库上的更新不会破坏您的应用程序。
答案 0 :(得分:11)
如果您正在使用cocoapods,则只需使用link_with来包含测试目标,但如果您使用的是非cocoapods创建的静态库,则可以执行以下操作:
(我仍然会使用cocoapods库来获取说明,因为我正在使用它,但如果您不使用cocoapods库,那么这个想法是一样的)
创建新的测试目标后,单击项目导航器中的项目根节点,然后选择您的测试目标。
转到Build Settings
并搜索Header Search Paths
。双击Header Search Paths
项目,然后输入
${SRCROOT}/Pods/Headers
如果要导入所有cocoapods库标题或单独输入,请选择recursive
:
${SRCROOT}/Pods/Headers/MagicalRecord
选择了non-recursive
(虽然在这种情况下它并不重要)。
现在搜索Linking
并在Other Linker Flags
添加-ObjC
现在仍然选择了测试目标,转到Build Phases
并在Link Binary With Libraries
点击+
并单独添加libPods.a
或其他图书馆{{1} })
您应该能够使用静态库运行XCTest。
可选:我想导入我知道我将在-Prefix.pch文件中使用的标头。您可以在Project Navigator中转到目标测试组。转到libPods-MagicalRecord.a
组并打开Supporting Files
文件。对于MagicalRecord,我想补充一下:
-Prefix.pch
了解更多信息:
答案 1 :(得分:0)
经过大量的战斗,这些步骤对我有用:
1)项目>信息
在配置上,将测试目标设置为与主项目共享相同的配置文件(由Cocoapods生成)。
现在,您应该开始出现一些错误,因为缺少XCUnit框架,但现在您的CocoaPod导入的外部库在您的测试项目中可见。
2)在测试目标>构建设置上寻找页眉搜索路径,一旦添加:
$(DEVELOPER_DIR)/Platforms/iPhoneOS.platform/Developer/Library/Frameworks
$(DEVELOPER_DIR)/Platforms/iPhoneSimulator.platform/Developer/Library/Frameworks
单元测试框架位于您的Xcode应用程序中,此标题将使其公开以便稍后添加。
3)关于测试目标> Build Phases添加SenTestingKit.framework
看起来应该是这样的
从那以后,一切似乎对我有用。祝你好运。