Xcode5:单元测试链接错误

时间:2014-06-22 05:50:05

标签: objective-c unit-testing xcode5 xctest xcode-bots

在测试XCTestCase时,我似乎遇到了这个奇怪的问题。我创建了一个单元测试包,并将我的主应用程序设置为“目标”;现在我可以针对我的Core Data NSManagedObjects编写测试,但如果我在我的应用程序中包含其他任何不是NSManagedObject的内容,我会收到链接错误:

  

架构x86_64的未定义符号:     “_OBJC_CLASS _ $ _ iCloudListener”,引自:         SLTestToDoWithRepeatInterval.o中的objc-class-ref   ld:找不到架构x86_64的符号   clang:错误:链接器命令失败,退出代码为1(使用-v查看调用)

这仅适用于非NSManagedObjects。并且iCloudListener肯定是主要应用程序目标的编译源。问题是虽然我可以将这个特定的iCloudListener类添加到测试目标中 - >构建阶段 - >编译源列表,这将使这个特定的链接错误消失,但它引入了新的,因为它开始提供关于来自iCLoudListener类的所有头文件的链接错误;如果我开始添加它们,它们需要越来越多的文件,我必须将我的几乎所有代码都包含在测试目标“编译源”部分中。

我在这里做错了吗?是否有可能导致Xcode忽略非NSManagedObject类的设置?

1 个答案:

答案 0 :(得分:0)

这是因为项目在编译源中插入了核心数据的 xcdatamodeld 文件。选择你的项目 - >构建阶段 - >编译源并删除 projectName.xcdatamodeld 文件。 并且还检查是否已导入.m文件而不是.h文件,它也会提供相同的链接器错误。 检查所有#import代码。 并检查您是否在库中添加了核心数据框架工作并导入了核心数据.h文件。检查 NSManagedObject 的创建并导入其文件。 试试看,如果还有错误,请回复我。