MiK*_*iKL 16 iphone xcode unit-testing ocunit ios
注意:现在单元测试更容易设置.本教程与Xcode版本5及更高版本无关.
我花了很长时间,但我终于设法使它适用于我的项目.为了创建"逻辑"测试,我遵循Apple关于创建逻辑测试的指导原则.一旦您了解在构建期间运行逻辑测试,这就可以正常工作.
为了能够调试这些测试,需要创建一个可以调用这些测试的自定义可执行文件.本文通过对所著的Grokking可可博客肖恩·米塞利提供的所有信息来做到这一点.然而,它并没有立即取得成功,需要进行一些调整.
我将介绍Sean教程中提供的主要步骤,提供一些"for dummies"大纲,这花了我一些时间来弄清楚:
使用XCode 3.2.5执行以下操作
在XCode 4中,可以直接调试单元测试.只需编写测试,将其作为测试之一添加到目标并在其中设置断点.就这样.会有更多.
两者的名字可以是任何东西,但我会避免空格.
这里最重要的一点是获得正确的otest,即适用于您当前的iOS而不是默认的Mac版本.这在Sean的教程中有详细描述.以下是一些帮助我做好准备的细节:
讽刺的论点很容易设置......但事实证明这是我最大的问题.我最初将我的逻辑测试目标命名为"LogicTests Debug".使用此名称和"LogicTests Debug.octest"(带引号)作为otest的参数我保持otest终止与退出代码1并且永远不会停止到我的代码...
解决方案:目标名称中没有空格!
otest的论据是:
以下是复制/粘贴的环境变量列表:
请注意,我也尝试过DYLD_FORCE_FLAT_NAMESPACE,但这只是造成了骚乱.
要运行您的otest可执行文件并开始调试您的测试,您需要:
您可以使用断点构建和运行可执行文件并调试测试.
作为旁注,如果您在运行otest可执行文件时遇到问题,则可能与以下内容有关:
您可能会在控制台中收到一些消息,这些消息可能会导致您认为环境变量存在问题.您可能会注意到有关CFP参考的消息.此消息不会阻止测试正常运行,因此如果您在运行otest时遇到问题,请不要关注它.
一旦一切正常,您将能够在测试中的断点处停下来.
我在很多博客上都看到,集成的XCode SenTestKit的主要限制是在构建应用程序时无法运行测试.事实证明这实际上很容易管理.您只需将Logic测试包添加为应用程序项目的依赖项.这将确保在构建应用程序之前构建逻辑测试包,即运行所有测试.
为此,您可以将逻辑测试包拖放到应用程序目标上.
这篇文章的目的是作为"操作方法",而不仅仅是一个真正的问题.因此,这个答案只是为了让我将"操作方法"标记为"已回答".这可能会被社区标记为不正常.我想知道在哪里发布未来的"操作方法"文章.
关于这个主题的最后一点说明.对于那些仍然怀疑写单元测试是否值得的人我肯定会说是的!
我目前正在使用CoreData编写应用程序并从Web服务检索数据(xml解析).可以测试和调试完整的模型,而无需:
要调试xml解析,我可以简单地使用我完全控制的"硬编码"文件.
当然,在您在代码中实现功能时,要编写测试.在整个应用程序的调试方面,它确实节省了时间.
Voilà,我会留下它.
归档时间: |
|
查看次数: |
6597 次 |
最近记录: |