我正在尝试为我的iphone应用程序设置应用程序单元测试。因此,我复制了应用程序目标和单元测试捆绑包目标,如苹果的documentation中所述。
在遵循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'然后,我切换回运行应用程序的正常目标,它运行了我的所有单元测试并退出!我再次清理并构建,然后正常的目标运行正常。单元测试目标仍然不起作用。
发布于 2010-02-17 19:27:30
从给出的日志消息中,我假设您正在尝试设置一个“逻辑测试”(很尴尬,不是吗?)。您的问题是,当需要将代码包含在测试包中时,您会尝试链接到要测试的代码。这里是manual的相关部分(重点是我的)。
对于访问主题API的测试用例,您可能需要将适当的实现文件添加到单元测试包中,并将相应的头文件导入到您的单元测试类中。有关使用单元测试的项目的示例,请参见iPhoneUnitTests示例代码项目。
我发现使用OCUnit进行单元测试也是一种不太理想的体验。在Obj-C世界中,单元测试并不是一流的实践,至少从Apple提供的实践来看是这样。OCTest是SenTestingKit的自定义版本。基本上,它创建了一个扩展名为.octest的库,由OCTest运行器(otest)执行。iPhone不支持动态链接(更好的说法是:允许),这就是为什么你只能在你的mac上运行你的测试。
这就是“逻辑测试”的简单情况,“应用程序测试”则稍微复杂一些。OCUnit的工作方式会带来各种各样的痛苦,尤其是在调试方面。这就是为什么我和其他许多人选择了OCTest,而选择了GTM或GHUnit。它们通过静态链接工作,并将测试运行器包含在测试目标本身中。(有点类似于“应用程序测试”。)
发布于 2010-02-14 06:21:42
虽然这不能直接回答你的问题,但我想说,我试着使用苹果的单元测试信息遵循你的路线,发现它不是一个最优的TDD方法,所以我选择了其他人推荐的方法:
Google's Toolbox iPhoneUnitTesting Kit
UISpec for GUI unit testing
Tutorial关于如何使其运行以及关于可用于iPhone单元测试的不同选项的讨论。
我认为苹果提供的选项只能在模拟器模式下运行,而且还有很多缺点……很抱歉没有直接回答你的问题,但也许你可以从不同的角度来解决这个问题(就像我在这里发布的那些)。
https://stackoverflow.com/questions/2235040
复制相似问题