iOS 单元测试与静态库,类别找不到方法的问题解决
记录一次较为坑爹的制作单元测试的经历。
背景是使用Quick写个模块的单元测试。
结果调用pod引入的组件库中的一个类的类别中的方法时,一直不通过。build和断点调试的时候,一切都是正常。一旦执行完成后。Test就crash,报错
如图。
1.开始考虑是否是未导入相关库的头文件导致,结果全部导入后还是不行。
2.然后思考是不是引入的库的环境有问题。对照其他库后发现,有些库的类的类别方法调用是没有问题。有些库中类的类别方法调用也会crash。
分析过后发现:有问题的库都是静态库,没有问题的都是动态库
3.按照上述分析,继续追踪。
网上有文章分析,静态库引入导致的crash。静态库中category方法无法找到。加入-ObjC即可。
https://www.jianshu.com/p/8bbb1c38d3ac
检查了test 和 宿主工程本身的 build settings 的 other link flags 都包含了 -ObjC。问题依然存在。
4.后续就分析是不是test本身的特殊性就单独去查:XCtest 与 静态库
结果找到了这篇文章 https://www.thinbug.com/q/18677952
尝试在 build Phases -> link binary with library 中手动加入test需要访问的类的库,问题解决。
一番折腾,总共大概用了1天多时间来定位这个问题,真的坑。