iOS   发布时间:2022-05-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何运行和调试iPhone应用程序的单元测试大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

注意:单元测试现在很容易设置。本教程与Xcode 5及更高版本并不重要。 花了我一段时间,但我终于设法使我的项目工作。 为了创建“逻辑”测试,我跟着Apple guidelines on creaTing logic tests。 一旦您了解逻辑测试在构建过程中运行,此工作正常。 为了能够调试这些测试,需要创建一个可以调用这些测试的自定义可执行文件。 Sean Miceli on the Grok
注意:单元测试现在很容易设置。本教程与Xcode 5及更高版本并不重要。

花了我一段时间,但我终于设法使我的项目工作。
为了创建“逻辑”测试,我跟着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崩溃。

步骤4 – 运行你的otest可执行文件

要运行您的otest可执行文件并开始调试测试,您需要:

>将您的活动目标设置为您的单元测试目标(在我的情况下为LogicTestsDebug)
>将您的活动可执行文件设置为otest可执行文件

您可以构建并运行可执行文件并使用断点调试测试。

如果您在运行otest可执行文件遇到问题,请注意以下事项:

>路径错误我最初有很多问题,因为我指向mac otest。终止代码6,我一直在推出。
>参数错误。直到我从bundle(.octest)名称删除了空格,我保持与出口代码1的Otest崩溃。
>环境变量路径错误。肖教程有许多后续问题,提供了一些其他人尝试的见解。我现在看起来似乎有工作,所以我建议你从这开始。

您可能会在控制台中收到一些消息,这可能会导致您认为环境变量有问题。您可能会注意到有关CFPreferences的消息。这个消息并不能阻止测试正常运行,所以不要专注于运行otest的问题。

最后一旦一切正常,你将能够在你的测试中断断点。

最后一件事…

我在许多博客上阅读过,集成XCode SenTestKit的主要限制是在构建应用程序时无法运行测试。事实证明,这实际上很容易管理。您只需将您的Logic测试包作为依赖项添加到您的应用程序项目中。这将确保在构建应用程序之前,您的逻辑测试软件包已构建,即所有测试都会运行。

为此,您可以将逻辑测试包拖放到应用程序目标上。

解决方法

这个帖子是一个“操作方法”,而不是一个真正的问题。所以这个答案只是为了让我把“How-to”标记为“回答”。这可能会被社区标记为不定式。我想了解如何发布未来的“如何”文章的建议。

关于这个话题的最后一句话。
对于仍然怀疑写单元测试是否值得的人,我一定会说是的!

我正在使用COreData编写应用程序,并从Web服务(xml解析)检索数据。完整的型号可以进行测试和调试,而无需:

>在模拟器或设备上运行实际的应用程序。不必使用设备来运行测试是一个巨大的时间。这是每次跑步2分5秒之间的差距。
>而不需要在测试模型时创建视图或控制器。完整的开发和测试只能在第一次迭代中关注模型。一旦模型被清除以进行集成,其余的开发可以遵循。

要调试xml解析,我可以简单地使用我完全控制的“硬编码”文件

当您在代码中实现功能时,关键在于编写测试。在整个应用程序的调试方面,它真的是一个节省时间的线程。

Voilà,我会留下来的。

大佬总结

以上是大佬教程为你收集整理的如何运行和调试iPhone应用程序的单元测试全部内容,希望文章能够帮你解决如何运行和调试iPhone应用程序的单元测试所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。