XCTest 不会从我的目标应用程序链接类
Posted
技术标签:
【中文标题】XCTest 不会从我的目标应用程序链接类【英文标题】:XCTest won't link classes from my target application 【发布时间】:2014-10-31 18:15:03 【问题描述】:我将 Xcode 6.1 中的单元测试目标添加到现有项目中。如果我做一个简单的测试,比如
XCTestAssert(1 + 1 == 2, @"Addition");
它构建和工作正常。当我尝试使用目标应用程序中的任何类时,我收到链接器错误。我不知道如何让它正确链接。这两个目标都是为相同的架构构建的。我尝试设置一个新项目,并且可以使用目标应用程序中的类。我可能遗漏了一些简单的东西,但我无法弄清楚它是什么,并且在搜索其他解决方案时我无法找到任何有帮助的东西。
我得到的错误是
Undefined symbols for architecture i386:
"_OBJC_CLASS_$_NoteManager", referenced from:
objc-class-ref in ESV_Tests.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
NoteManager
是我要测试的类。
谢谢
【问题讨论】:
【参考方案1】:您应该检查主要目标中的剥离和隐藏符号设置。链接器从 -bundle_loader 选项中的应用程序二进制文件 (Application.app/Application) 中读取您的类。您可以通过以下命令检查符号:
nm <path to Application.app/Application> | grep NoteManager
我还建议您在设置更改后重建项目
【讨论】:
【参考方案2】:所以我找到了解决方案。在我的目标应用程序(不是测试目标)中,我需要将“默认隐藏的符号”标志设置为 NO。
【讨论】:
以上是关于XCTest 不会从我的目标应用程序链接类的主要内容,如果未能解决你的问题,请参考以下文章
Xcode 不会将 XCTest 链接到 iOSSimulator 版本