如何运行和调试iPhone应用程序的单元测试
注意:单元测试现在很容易设置。本教程与Xcode 5及更高版本并不重要。
花了我一段时间,但我终于设法使我的项目工作。 为了能够调试这些测试,需要创建一个可以调用这些测试的自定义可执行文件。 Sean Miceli on the Grokking Cocoa blog的文章提供了所有的信息来做到这一点。然而,它并没有立即取得成功,需要进行一些调整。 我将介绍在Sean的教程中提供的主要步骤,提供一些“虚拟人物”大纲,花了我一些时间来弄清楚: >设置包含单元测试的目标,但不要运行它们 以下是使用XCode 3.2.5进行的 XCode 4的注意事项 在XCode 4中,可以直接调试您的单元测试。只需编写测试,将其添加到您的目标作为测试之一并在其中设置断点。就这样。更多的会来 步骤1 – 设置目标 >复制您的项目目标下的单元测试目标。这也将创建您的单元测试产品(.octest文件)的副本。在下图中,“LogicTest”是原始目标。 两者的名称可以是任何东西,但我会避免空格。 步骤2 – 设置otest 这里最重要的一点是获得正确的otest,即当前的iOS版本,而不是默认的Mac版本。这在Sean的教程中有很好的描述。这里有一些更多的细节,帮助我设置正确的事情: > Go Project->新的自定义可执行文件。这将弹出一个窗口,提示您输入可执行文件名和可执行路径。 步骤3 – 设置otest参数和环境变量 otest参数是直接设置…但这被证明是我最大的问题。我最初命名了我的逻辑测试目标“LogicTests Debug”。使用这个名字和“LogicTests Debug.octest”(带引号)作为参数otest,我一直用otest终止退出代码1,不要停在我的代码… 解决方案:您的目标名称中没有空格! otest的论点是: > -SenTest Self(或全部或测试名称 – 在终端中键入man otest以获取列表) 以下是复制/粘贴的环境变量列表: > DYLD_ROOT_PATH:$ SDKROOT 请注意,我也尝试过DYLD_FORCE_FLAT_NAMESPACE,但这只是使Otest崩溃。 步骤4 – 运行你的otest可执行文件 要运行您的otest可执行文件并开始调试测试,您需要: >将您的活动目标设置为您的单元测试目标(在我的情况下为LogicTestsDebug) 您可以构建并运行可执行文件并使用断点调试测试。 如果您在运行otest可执行文件时遇到问题,请注意以下事项: >路径错误我最初有很多问题,因为我指向mac otest。终止代码6,我一直在推出。 您可能会在控制台中收到一些消息,这可能会导致您认为环境变量有问题。您可能会注意到有关CFPreferences的消息。这个消息并不能阻止测试正常运行,所以不要专注于运行otest的问题。 最后一旦一切正常,你将能够在你的测试中断断点。 最后一件事… 我在许多博客上阅读过,集成XCode SenTestKit的主要限制是在构建应用程序时无法运行测试。事实证明,这实际上很容易管理。您只需将您的Logic测试包作为依赖项添加到您的应用程序项目中。这将确保在构建应用程序之前,您的逻辑测试软件包已构建,即所有测试都会运行。 为此,您可以将逻辑测试包拖放到应用程序目标上。 解决方法
这个帖子是一个“操作方法”,而不是一个真正的问题。所以这个答案只是为了让我把“How-to”标记为“回答”。这可能会被社区标记为不定式。我想了解如何发布未来的“如何”文章的建议。
关于这个话题的最后一句话。 我正在使用CoreData编写应用程序,并从Web服务(xml解析)检索数据。完整的型号可以进行测试和调试,而无需: >在模拟器或设备上运行实际的应用程序。不必使用设备来运行测试是一个巨大的时间。这是每次跑步2分5秒之间的差距。 要调试xml解析,我可以简单地使用我完全控制的“硬编码”文件。 当您在代码中实现功能时,关键在于编写测试。在整个应用程序的调试方面,它真的是一个节省时间的线程。 Voilà,我会留下来的。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |