我在单元测试中测试控制器的类型如下:
[controller isKindOfClass:[MyVIEwController class]];
但是,isKindOfClass方法总是返回NO
当我调试器中的对象时,我得到以下内容:
(gdb) po controller<MyVIEwController: 0xb31c4d0>
我也尝试过isMemberOfClass:方法,它产生相同的结果。任何人都可以解释为什么会发生这种情况吗?
编辑:所以在阅读了Nick weaver发表的文章之后,我意识到我将应用程序的源文件包含在测试包的编译源构建阶段。日志中也显示了这一点,类似于以下内容:
Class MyVIEwController is implemented in both /Users/jdoe/library/Application Support/iPhone Simulator/4.3.2/Applications/670A077A-BAD8-4FA6-945A-851F33114CF5/MyApp.app/MyApp and /Users/jdoe/library/Developer/Xcode/DerivedData/MyApp-drxyfejeattjwgantzesgensnlnx/Build/Products/DeBUG-iphonesimulator/MyAppTests.octest/MyAppTests. One of the two will be used. Which one is undefined.
但是,当我从测试包的编译源构建阶段中删除源文件时,我会收到如下所示的链接器错误:
Undefined symbols for architecture i386:"_OBJC_CLASS_$_MyVIEwController",referenced from: objc-class-ref in _MyVIEwControllerTests.o (maybe you meant: _OBJC_CLASS_$__MyVIEwControllerTests)解决方法 如我的问题所述,我意识到我错误地将应用程序的源文件包含在测试包的编译源构建阶段。从此构建阶段中删除源文件后,通过将默认构建设置中的“符号”更改为“否”以调试配置,解决了缺失符号的链接器错误
这解决了链接器错误,意味着我不再包含重复的源文件
注意:另外,请确保在Xcode的“信息”选项卡中设置测试目标的“主机目标”,以便从那里拉出编译源
总结以上是内存溢出为你收集整理的objective-c – isKindOfClass:在单元测试包中返回false negative全部内容,希望文章能够帮你解决objective-c – isKindOfClass:在单元测试包中返回false negative所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)