大佬教程收集整理的这篇文章主要介绍了如何运行和调试iPhone应用程序的单元测试,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
花了我一段时间,但我终于设法使我的项目工作。
为了创建“逻辑”测试,我跟着Apple guidelines on creating logic tests。
一旦您了解逻辑测试在构建过程中运行,此工作正常。
为了能够调试这些测试,需要创建一个可以调用这些测试的自定义可执行文件。 Sean Miceli on the Grokking Cocoa blog的文章提供了所有的信息来做到这一点。然而,它并没有立即取得成功,需要进行一些调整。
我将介绍在Sean的教程中提供的主要步骤,提供一些“虚拟人物”大纲,花了我一些时间来弄清楚:
>设置包含单元测试的目标,但不要运行它们
>设置otest可执行文件以运行测试
>设置otest环境变量,以便otest可以找到你的单元测试
以下是使用XCode 3.2.5进行的
XCode 4的注意事项
在XCode 4中,可以直接调试您的单元测试。只需编写测试,将其添加到您的目标作为测试之一并在其中设置断点。就这样。更多的会来
步骤1 – 设置目标
>复制您的项目目标下的单元测试目标。这也将创建您的单元测试产品(.octest文件)的副本。在下图中,“LogicTest”是原始目标。
>将单元测试目标和单元测试产品(.octest文件)@L_801_11@为同名。在下图中,“LogicTestsDebug”是重复的目标。
>删除新目标的RunScript阶段
两者的名称可以是任何东西,但我会避免空格。
步骤2 – 设置otest
这里最重要的一点是获得正确的otest,即当前的iOS版本,而不是默认的Mac版本。这在Sean的教程中有很好的描述。这里有一些更多的细节,帮助我设置正确的事情:
> Go Project->新的自定义可执行文件。这将弹出一个窗口,提示您输入可执行文件名和可执行路径。
>输入您想要的任何名称。
>复制粘贴到您的iOS otest可执行文件的路径。在我的情况下,这是/Developer/Platforms/iPhonesimulator.platform/Developer/SDKs/iPhonesimulator4.2.sdk/Developer/usr/bin/otest
>按回车。这将带您进入可执行文件的配置页面。
>此时唯一要更改的是选择“路径类型:相对于当前SDK”。不要键入路径,这是在步骤3完成的。
步骤3 – 设置otest参数和环境变量
otest参数是直接设置…但这被证明是我最大的问题。我最初命名了我的逻辑测试目标“LogicTests Debug”。使用这个名字和“LogicTests Debug.octest”(带引号)作为参数otest,我一直用otest终止@L_874_24@代码1,不要停在我的代码…
otest的论点是:
> -SenTest Self(或全部或测试名称 – 在终端中键入man otest以获取列表)
> {LogicTestsDebug} .octest – 其中{LogicTestsDebug}需要由您的逻辑测试包名称替换。
以下是复制/粘贴的环境变量列表:
> DYLD_ROOT_PATH:$ SDKROOT
> DYLD_FRAMEWORK_PATH:“$ {BUILD_PRODUCTS_DIR}:$ {SDK_ROOT}:$ {DYLD_FRAMEWORK_PATH}”
> IPHONE_SIMULATOR_ROOT:$ SDKROOT
> CFFIXED_user_HOME:“$ {HOME} /图书馆/应用程序支持/ iPhone模拟器/用户”
> DYLD_LIBRARY_PATH:$ {BUILD_PRODUCTS_DIR}:$ {DYLD_LIBRARY_PATH}
> DYLD_NEW_LOCAL_SHARED_REGIONS:是
> DYLD_NO_FIX_PREBINDING:是
请注意,我也尝试过DYLD_FORCE_FLAt_nameSPACE,但这只是使Otest崩溃。
要运行您的otest可执行文件并开始调试测试,您需要:
>将您的活动目标设置为您的单元测试目标(在我的情况下为LogicTestsDebug)
>将您的活动可执行文件设置为otest可执行文件
您可以构建并运行可执行文件并使用断点调试测试。
如果您在运行otest可执行文件时遇到问题,请注意以下事项:
>路径错误我最初有很多问题,因为我指向mac otest。终止代码6,我一直在推出。
>参数错误。直到我从bundle(.octest)名称中删除了空格,我保持与出口代码1的Otest崩溃。
>环境变量路径错误。肖恩教程有许多后续问题,提供了一些其他人尝试的见解。我现在看起来似乎有工作,所以我建议你从这开始。
您可能会在控制台中收到一些消息,这可能会导致您认为环境变量有问题。您可能会注意到有关CFPreferences的消息。这个消息并不能阻止测试正常运行,所以不要专注于运行otest的问题。
最后一旦一切正常,你将能够在你的测试中断断点。
最后一件事…
我在许多博客上阅读过,集成XCode SenTestKit的主要限制是在构建应用程序时无法运行测试。事实证明,这实际上很容易管理。您只需将您的Logic测试包作为依赖项添加到您的应用程序项目中。这将确保在构建应用程序之前,您的逻辑测试软件包已构建,即所有测试都会运行。
为此,您可以将逻辑测试包拖放到应用程序目标上。
关于这个话题的最后一句话。
对于仍然怀疑写单元测试是否值得的人,我一定会说是的!
我正在使用COreData编写应用程序,并从Web服务(xml解析)检索数据。完整的型号可以进行测试和调试,而无需:
>在模拟器或设备上运行实际的应用程序。不必使用设备来运行测试是一个巨大的时间。这是每次跑步2分5秒之间的差距。
>而不需要在测试模型时创建视图或控制器。完整的开发和测试只能在第一次迭代中关注模型。一旦模型被清除以进行集成,其余的开发可以遵循。
要调试xml解析,我可以简单地使用我完全控制的“硬编码”文件。
当您在代码中实现功能时,关键在于编写测试。在整个应用程序的调试方面,它真的是一个节省时间的线程。
Voilà,我会留下来的。
以上是大佬教程为你收集整理的如何运行和调试iPhone应用程序的单元测试全部内容,希望文章能够帮你解决如何运行和调试iPhone应用程序的单元测试所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。