首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iPhone单元测试链接问题,找不到DevToolsBundleInjection.framework

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

Stack Overflow用户
提问于 2010-02-10 15:11:25
回答 2查看 1.3K关注 0票数 1

我正在尝试为我的iphone应用程序设置应用程序单元测试。因此,我复制了应用程序目标和单元测试捆绑包目标,如苹果的documentation中所述。

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

代码语言:javascript
复制
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

并做了一个符号链接。然后运行应用程序说它不能链接应用程序的文件:

代码语言:javascript
复制
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'

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

EN

回答 2

Stack Overflow用户

发布于 2010-02-17 19:27:30

从给出的日志消息中,我假设您正在尝试设置一个“逻辑测试”(很尴尬,不是吗?)。您的问题是,当需要将代码包含在测试包中时,您会尝试链接到要测试的代码。这里是manual的相关部分(重点是我的)。

对于访问主题API的测试用例,您可能需要将适当的实现文件添加到单元测试包中,并将相应的头文件导入到您的单元测试类中。有关使用单元测试的项目的示例,请参见iPhoneUnitTests示例代码项目。

我发现使用OCUnit进行单元测试也是一种不太理想的体验。在Obj-C世界中,单元测试并不是一流的实践,至少从Apple提供的实践来看是这样。OCTest是SenTestingKit的自定义版本。基本上,它创建了一个扩展名为.octest的库,由OCTest运行器(otest)执行。iPhone不支持动态链接(更好的说法是:允许),这就是为什么你只能在你的mac上运行你的测试。

这就是“逻辑测试”的简单情况,“应用程序测试”则稍微复杂一些。OCUnit的工作方式会带来各种各样的痛苦,尤其是在调试方面。这就是为什么我和其他许多人选择了OCTest,而选择了GTM或GHUnit。它们通过静态链接工作,并将测试运行器包含在测试目标本身中。(有点类似于“应用程序测试”。)

票数 2
EN

Stack Overflow用户

发布于 2010-02-14 06:21:42

虽然这不能直接回答你的问题,但我想说,我试着使用苹果的单元测试信息遵循你的路线,发现它不是一个最优的TDD方法,所以我选择了其他人推荐的方法:

Google's Toolbox iPhoneUnitTesting Kit

UISpec for GUI unit testing

Tutorial关于如何使其运行以及关于可用于iPhone单元测试的不同选项的讨论。

我认为苹果提供的选项只能在模拟器模式下运行,而且还有很多缺点……很抱歉没有直接回答你的问题,但也许你可以从不同的角度来解决这个问题(就像我在这里发布的那些)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2235040

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档