【问题标题】:Verify method signatures before swizzling在混合之前验证方法签名
【发布时间】:2018-12-11 21:35:30
【问题描述】:

我一直在使用方法调配来交换实现以进行单元测试。但是,我担心如果生产代码的方法签名由于参数更改而发生更改,单元测试将无错误地编译,并且测试运行时行为可能会不稳定。

那么,是否有任何编译时甚至运行时的方式来确认两个 Objective-C 方法的签名是否相同?

【问题讨论】:

  • 除非您的测试中的方法签名与生产中的相同,否则这不是一个有效的测试。
  • @RobertHarvey:你是说单元测试如果使用签名与生产不匹配的混合方法总是会失败?
  • 它不会运行。怎么可能?
  • 单元测试可能会崩溃……也可能不会。此类事故在过去一直难以追查。因此,目标是在 swizzling 之前检测方法签名不匹配。有人知道方法吗?
  • 好的,很明显我没有资格回答你的问题。我什至不知道“搅拌”是什么意思。我也不明白方法签名如何突然按照您描述的方式改变。

标签: objective-c method-signature swizzling


【解决方案1】:

只要您设置了单元测试,以便编写代码,就好像您正在使用其真实接口调用真实类的实例一样,那么应该在编译时捕获签名的变化。

您可以通过运行时 grub 并获取方法签名,然后比较所述签名的元素的兼容性,但这不会捕获所有更改(例如,接受对象的所有参数都被编码为 '@ ')。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-12-07
    • 2022-07-20
    • 1970-01-01
    • 1970-01-01
    • 2020-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多