objective-c - iOS 单元测试 : Can't link to symbols in my Application target. 怎么了?

标签 objective-c ios xcode unit-testing

设置:
Xcode 4.5.2 (4G2008a)
OS X 10.7.5


我有一个带有普通 iOS Application 目标的 Xcode 项目。我正在尝试添加 ApplicationTests 单元测试包(不是 LogicTests 包)作为 described by Apple's documentation .

我已仔细按照文档中提供的步骤进行操作,并重新检查了几次所有内容。但是,我无法构建 ApplicationTests 目标……在尝试链接到我的 Appliation 类之一时,它因链接器错误而失败。似乎设置 ApplicationTests 目标的 Bundle Loader build设置不起作用。但是 AFAICT,我已经正确设置了它,如 Apple 文档所述。


我的重现步骤:

  1. 关注Apple's documentation for setting up an ApplicationTests bundle .
  2. ApplicationTests 目标中编写一个单元测试方法,该方法从 Application 目标(例如 MyAppClass)导入并执行一个类。
  3. 在方案弹出窗口中选择应用程序目标,并在运行目标弹出窗口中选择 iPhone 6.0 模拟器
  4. 产品 > 测试

预计:
模拟器应该启动并且我的 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 包将成功构建和运行。

同样,似乎我没有在我的 ApplicationTests 目标中正确设置 Bundle Loader build设置,但我已经重新检查过,我似乎已正确遵循 Apple 的说明。

我做错了什么导致我的 ApplicationTests 目标无法链接到我的 Application 目标中的符号?


更新:我还尝试使用 ApplicationApplicationTests 目标从头开始创建新的虚拟项目。在虚拟项目中,我将 MyAppClass 类添加到 Application 目标,并且能够链接到它并成功运行使用 MyAppClass 在虚拟 ApplicationTests 目标中。

所以我的虚拟项目中的应用程序测试有效。但它们在我的真实项目中不起作用。我比较了虚拟项目和真实项目中的目标,但找不到会导致我的真实项目出现此问题的显着差异。

我的真实项目很老(但也很复杂,所以很难重新开始)。我想知道项目的陈旧性是否会阻止这个相对较新的功能发挥作用?

在我看来,我的真实项目中的一个目标仍然存在build设置问题。但是我找不到它。

最佳答案

你能试试用Xcode 5.0打开这个项目吗?在项目/目标设置中选择单元测试目标,打开“常规”选项卡并检查所选“目标”是否是您的主要应用目标。

这就是 Xcode 获取链接到单元测试包加载器的信息的地方。

关于objective-c - iOS 单元测试 : Can't link to symbols in my Application target. 怎么了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13656186/

相关文章:

ios - 仅从服务器获取已更改的 SQL 结果

ios:禁用向前触摸事件

ios - UIViewController 布局更改

xcode - 如何从 .p12 文件中获取发行版身份的名称

iphone - AVAssetImageGenerator 提供旋转的图像

ios - 将图像添加到 imageView iOS 时出现 NSInvalidArgumentException 异常

iOS 在 View 中播放背景视频

iOS sdk 4.3 和相机效果(如镜子、模糊、热感...等)?

ios - Xcode SpriteKit Game - 如何在应用程序安装过程中为多种屏幕尺寸配置 UI

ios - Autolayout - 在模拟器中运行时文本字段垂直拉伸(stretch)