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天多时间来定位这个问题,真的坑。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值