OCUnit测试现有的iOS项目."ld:找不到文件"

Sam*_*Sam 18 objective-c ocunit ios xcode4 sentestingkit

我一直在关注这篇博文:将单元测试添加到现有项目中.

但是我收到了这个错误:

ld:找不到文件:Build/Products/Debug-iphoneos/MyApp.app/MyApp Command /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/clang失败,退出代码为1

我有我的测试目标属性,

Bundle Loader = $(BUILT_PRODUCTS_DIR)/MyApp.app/MyApp

测试主机= $(BUNDLE_LOADER)

(它们都等同于:build/Debug-iphoneos/MyApp.app/MyApp)

我猜测这些变量并没有指向与编译器相同的位置."build/Debug-iphoneos/..."vs"Build/Products/Debug-iphoneos/......"

我可能完全错误的猜测,但无论哪种方式,有没有人知道是什么导致了这个错误或我将如何修复这些环境变量?

谢谢你的帮助,

山姆

Jon*_*eid 18

深入了解〜/ Library/Developer/Xcode/DerivedData,进入你的项目.从那里,按照Bundle Loader路径.看看实际上有什么.

现在查看您的Info.plist(或您的目标的信息设置)并查找"可执行文件"或CFBundleExecutable.如果是${EXECUTABLE_NAME},请检查目标的"产品名称"设置.

  • 要检查的另一件事是单元测试目标的`Bundle Loader`设置.这个应用程序可执行文件的路径大多是从创建Xcode 4项目时硬编码的.(之后我改变了应用程序目标中的产品名称,单元测试目标也不知道它.) (5认同)

小智 6

我遇到了同样的问题 - 它没有意义,因为它实际上存在于可执行文件中使用的路径.仔细查看编译命令会发现加载器路径上有一个额外的空间是问题所在.

  • 谢谢!找到这个只是节省了一些时间.让我疯了 - 在一个明显存在的捆绑装载机上没有重复找到一个文件.在构建设置编辑器中,`$(BUILT_PRODUCTS_DIR)/ FSMTest.app/FSMTest`与`$(BUILT_PRODUCTS_DIR)/ FSMTest.app/FSMTest`(即具有前置空格)不同.Apple可能没有用一点点检查设计设置编辑器对话框吗? (5认同)