23

我想为我的 XCode 应用程序中的类编写一些逻辑单元测试。在 Xcode 4 中,我在 Project Navigator 中单击项目名称,然后从底部单击 Add Target。我在Other下选择了“Cocoa Touch Unit Testing Bundle”,给新目标一个“tests”的“product name”,然后完成。

因为我要测试的类被编译为我现有应用程序目标的一部分,所以对于我的新“测试”目标,我立即转到“构建阶段”选项卡并将我现有的应用程序目标添加为唯一的目标依赖项。

然后我转到创建的 tests.m 文件,导入我想要测试的类(在它下面ReleasePlanManager,并调用它的方法之一。但是链接器失败并出现如下错误:

Undefined symbols for architecture i386:
  "_OBJC_CLASS_$_ReleasePlanManager", referenced from:
      objc-class-ref in tests.o
ld: symbol(s) not found for architecture i386
collect2: ld returned 1 exit status

所以找不到类,即使(根据我的理解)添加应用程序目标(它是它的一部分)就足够了?

任何帮助将不胜感激。谢谢!

4

1 回答 1

33

您的测试包需要额外的设置:

  • Bundle Loader设置为$(BUILT_PRODUCTS_DIR)/AppName.app/AppName(将两个地方的 AppName 替换为您的应用名称)
  • 测试主机设置为$(BUNDLE_LOADER)

(如果您从头开始创建项目并启用单元测试,这些都是为您设置的。但如果您将单元测试包添加到现有项目,则它们不是。)

于 2011-09-03T03:59:36.820 回答