我想在我的XCode应用程序中为类编写一些逻辑单元测试。在Xcode 4中,我在Project Navigator中单击了项目名称,然后从底部单击Add Target。我选择了其他的“Cocoa Touch Unit Testing Bundle”,给新目标一个“测试”的“产品名称”,并完成。
因为我要测试的类是作为现有应用程序目标的一部分编译的,所以对于我的新“测试”目标,我立即转到Build Phases选项卡并将我现有的应用程序目标添加为唯一的目标依赖项。
然后我转到创建的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
所以无法找到类,即使(根据我的理解)添加应用程序目标(它是其中的一部分)应该足够了吗?
非常感谢任何帮助。谢谢!
答案 0 :(得分:33)
您的测试包需要额外的设置:
$(BUILT_PRODUCTS_DIR)/AppName.app/AppName
(使用您应用的名称替换两个地方的AppName)$(BUNDLE_LOADER)
(如果您从头开始创建项目并启用单元测试,则会为您设置这些项目。但是如果您将单元测试包添加到现有项目中,则它们不会。)