iPhone单元测试链接问题,找不到DevToolsBundleInjection.framework

时间:2010-01-26 04:27:55

标签: iphone unit-testing

我正在尝试为我的iphone应用设置应用程序单元测试。所以我制作了应用程序目标的副本,以及苹果文档(http://developer.apple.com/iphone/library/documentation/Xcode/Conceptual/iphone_development/135-Unit_Testing_Applications/unit_testing_applications.html)中描述的单元测试包目标

在遵循Apple的指示后,我无法在单元测试中引用我的类,因此我使用“Bundle Loader”构建设置将应用程序链接到单元测试包中,并将主目标设置为导出符号。这解决了编译时错误,并在我更改后立即工作并执行了我的测试。但是一旦我再次清理和构建,当我尝试在设备上运行时,我就开始收到此错误:

Unable to read symbols for "/Developer/Platforms/iPhoneOS.platform/DeviceSupport/3.1 (7C144)/Symbols/Developer/Library/PrivateFrameworks/DevToolsBundleInjection.framework/DevToolsBundleInjection" (file not found).

该文件确实不存在。我找到了.framework文件: /Xcode3.1.4/Library/PrivateFrameworks PrivateFrameworks

并建立了一个符号链接。然后运行应用程序说它无法链接应用程序的文件:

010-01-25 20:19:22.330 SmokeyTheBear[5808:207] Error loading /private/var/mobile/Applications/26E1F8F4-6444-415B-84CB-BB161DBA29E9/SmokeyTheBear.app/LogicTests.octest/LogicTests:  dlopen(/private/var/mobile/Applications/26E1F8F4-6444-415B-84CB-BB161DBA29E9/SmokeyTheBear.app/LogicTests.octest/LogicTests, 262): Symbol not found: _OBJC_CLASS_$_AppDelegate
  Referenced from: /private/var/mobile/Applications/26E1F8F4-6444-415B-84CB-BB161DBA29E9/SmokeyTheBear.app/LogicTests.octest/LogicTests
  Expected in: /var/mobile/Applications/26E1F8F4-6444-415B-84CB-BB161DBA29E9/SmokeyTheBear.app/UDorse
 in /private/var/mobile/Applications/26E1F8F4-6444-415B-84CB-BB161DBA29E9/SmokeyTheBear.app/LogicTests.octest/LogicTests
DevToolsBundleInjection: Error loading bundle '/private/var/mobile/Applications/26E1F8F4-6444-415B-84CB-BB161DBA29E9/SmokeyTheBear.app/LogicTests.octest'

然后,我切换回运行应用程序的正常目标,它运行了我所有的单元测试并退出!我再次清理并构建,然后正常目标正常运行。单元测试目标仍然无效。

3 个答案:

答案 0 :(得分:1)

检查项目目标的构建设置。

查找“默认隐藏的符号”设置。

确保至少为调试版本设置为 NO ,您应该将其用于测试。

如果没有此设置(可能会从较旧的Xcode项目中获取),测试代码将不会自动链接到项目代码。

答案 1 :(得分:0)

您是如何首先链接框架的?您不必创建符号链接以使其工作。切换到测试包目标并打开Project-> Edit Active Target。确保库位于常规选项卡的“链接库”部分中。如果是,请删除/重新添加。这为我修复了与图书馆链接相似的问题。

答案 2 :(得分:0)

嘿smokey_the_bear,你有没有检查过我对这个问题的看法:

Linker Error: iPhone Unit Test Bundle referencing App classes

我要指定捆绑加载器以正确链接。