我有三个类(class):ClassA、ClassB 和 ClassC。
ClassC 继承自 ClassB,ClassB 继承自 ClassA。
我正在尝试编写一个单元测试来验证 ClassC 是否继承自 ClassB:
XCTAssertTrue([ClassC isSubclassOfClass:[ClassB class]]);
这会返回 false。
XCTAssertTrue([ClassC isSubclassOfClass:[ClassA class]]);
返回真。
[ClassC class] superclass]
返回 B 类。
还要注意,当我在控制台中测试 [ClassC isSubclassOfClass:[ClassB class]]
时,它返回 true,即使我在单元测试中的代码返回 false 之前立即测试它测试!
谁能解释这是怎么发生的?
我从评论中尝试了 Bryan 的建议。从我的单元测试中记录我得到:
0x102a8c4e0 0x110d21820
从控制台记录我得到:
0x102a8c4e0 0x102a8c4e0
最佳答案
您可能已将一些类同时添加到您的应用目标和单元测试目标。
您的类(class)只能添加到应用程序目标中。
从您的编辑来看,似乎是 ClassB
出了问题 - 但值得检查所有三个。
SenTest/XCTest 使用测试工具,使应用中包含的类可用于测试,而无需显式包含它们的实现。
同时包含这两个类会为您提供重复的类,这就是它们具有不同内存地址的原因。
关于ios - NSObject +(BOOL)isSubclassOfClass : method returning wrong result,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26746419/