设置:
Xcode 4.5.2 (4G2008a)
OS X 10.7.5
我有一个带有普通 iOSApplication
目标的 Xcode 项目。我正在尝试按照Apple 文档的描述ApplicationTests
添加单元测试包(不是LogicTests
包)。
我已仔细按照文档中提供的步骤进行操作,并重新检查了几次。但是,我无法构建 ApplicationTests 目标......当尝试链接到我的应用程序的一个类时,它失败并出现链接器错误。似乎设置目标的Bundle Loader
构建设置ApplicationTests
不起作用。但是 AFAICT,我已经正确设置了,如 Apple 文档所述。
我的复制步骤:
- 按照Apple 的文档设置 ApplicationTests 包。
- 在目标中编写一个单元测试方法,该方法从
ApplicationTests
目标中导入并练习一个类Application
(例如MyAppClass
)。 - 在 Scheme 弹出窗口中选择 Application Target,在 run destination 弹出窗口中选择 iPhone 6.0 模拟器
Product
>Test
预期:
模拟器应该启动并且我ApplicationTests
应该运行。
实际:
目标ApplicationTests
无法构建并出现以下错误:
Undefined symbols for architecture i386:
"_OBJC_CLASS_$_MyAppClass", referenced from:
objc-class-ref in ApplicationTests.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
MyAppClass
如果我在单元测试中删除对的引用,则ApplicationTests
捆绑包将成功构建并运行。
同样,我似乎没有Bundle Loader
在我的目标中正确设置构建设置ApplicationTests
,但我已经重新检查过,我似乎正确地遵循了 Apple 的说明。
我做错了什么使我的ApplicationTests
目标无法链接到我的Application
目标中的符号?
更新Application
:我还尝试使用和ApplicationTests
目标从头开始创建新的虚拟项目。在虚拟项目中,我MyAppClass
向目标添加了一个类Application
,并且能够链接到它并成功运行MyAppClass
在虚拟ApplicationTests
目标中使用的单元测试。
所以我的虚拟项目中的应用程序测试有效。但它们在我的实际项目中不起作用。我已经比较了虚拟项目和真实项目中的目标,但找不到显着差异,这只会导致我的真实项目出现此问题。
我真正的项目很老(但也很复杂,所以很难重新开始)。我想知道项目的陈旧性是否阻止了这个相对较新的功能的工作?
在我看来,我的真实项目中的一个目标仍然存在构建设置问题。但我找不到它。