使用 OCMock 静态库进行 iOS 单元测试(-ObjC 标志问题)
Posted
技术标签:
【中文标题】使用 OCMock 静态库进行 iOS 单元测试(-ObjC 标志问题)【英文标题】:iOS unit test with OCMock static library (the -ObjC flag issue) 【发布时间】:2016-05-17 20:29:26 【问题描述】:我的项目是用 Objective-C 开发的。我有一个正在使用的第三方框架(我在这里将其命名为thirdparty
。抱歉,我无法说出第三方的名称)。
现在,我想为我的项目编写单元测试代码。我使用OCMock static library 并按照它的instruction 将这个静态库设置到我的ios 项目中。正如您在他们的说明中看到的,它要求我在 Build Settings -> Other Linker Flags 中添加 -ObjC
链接器标志。
但是当我构建我的项目时,我得到了以下错误:
ld: warning: Auto-Linking supplied '../thirdparty.framework/thirdparty',
missing required architecture i386 in file ../thirdparty.framework/thirdparty (2 slices)
但是,如果我从 Build Settings -> Other Linker Flags 中删除添加的 -ObjC
链接器标志,则上述错误消失,然后我的项目可以成功构建(但是在运行我的单元测试时,OCMock 库抛出错误,要求我添加 -ObjC
链接器标志)
【问题讨论】:
【参考方案1】:关于错误,我假设您的第 3 个库不支持 i386 架构。我猜你在模拟器上运行时遇到了这个问题。您应该再次检查您的库是否支持目标架构。这是要检查的脚本
xcrun -sdk iphoneos lipo -info $(FILENAME)
结果是这样的
所以我认为问题可能不是来自 OCMock 静态库,只要它支持 i386 架构。您还应该再次检查您的配置或其他库。
【讨论】:
谢谢,所以,如果我的第 3 个库不支持 i386 架构,并且我无法将支持添加到第 3 个库,那么我无能为力这个问题,对吧? 据我所知,除非您拥有 3rd 库的原始项目并自行构建,或者请求 3rd 团队的支持,否则我们无法做更多。以上是关于使用 OCMock 静态库进行 iOS 单元测试(-ObjC 标志问题)的主要内容,如果未能解决你的问题,请参考以下文章
使用 OCMock 和 MagicalRecord 进行单元测试