【发布时间】:2011-05-06 01:43:51
【问题描述】:
在 iPhone 上进行行为驱动开发的最佳技术是什么?有哪些开源示例项目可以证明这些技术的合理使用?以下是我发现的一些选项:
Unit Testing
Test::Unit风格
- OCUnit/SenTestingKit 如iOS Development Guide: Unit Testing Applications 和其他OCUnit references 中所述。
- CATCH
- GHUnit
- Google Toolbox for Mac: iPhone Unit Testing
RSpec风格
- Kiwi(还带有嘲讽和期望)
- Cedar
- Jasmine 和 UI Automation 如dexterous' iOS-Acceptance-Testing specs 所示
Acceptance Testing
Selenium风格
-
UI 自动化(在设备上工作)
- UI Automation Instruments Guide
- UI Automation reference documentation
- Tuneup js - 与 UIAutomation 一起使用的酷库。
-
Capturing User Interface Actions into Automation Scripts
可以使用Cucumber (written in JavaScript) 来驱动 UI 自动化。这将是一个很棒的开源项目。然后,我们可以写Gherkin 来运行 UI 自动化测试。现在,我将把 Gherkin 写成 cmets。
更新:Zucchini Framework 似乎融合了 Cucumber 和 UI 自动化! :)
旧博客文章:
Cucumber风格
-
Frank 和iCuke(基于Cucumber meets iPhone talk)
- Frank Google Group 的活动比iCuke Google Group 多得多。
- Frank 可在设备和模拟器上运行,而 iCuke 仅在模拟器中运行。
- Frank 似乎拥有比iCuke's step definitions 更全面的步骤定义集。还有,Frank also has a step definition compendium on their wiki。
- I proposed that we merge iCuke & Frank(类似于 Merb 和 Rails 的合并方式)因为它们有相同的共同目标:Cucumber for iOS。
Zucchini Framework 使用 Cucumber 语法编写测试并使用 CoffeeScript 进行步骤定义。
补充
- OCMock 为mocking
- OCHamcrest 和/或 Expecta 期待
结论
嗯,很明显,这个问题没有正确答案,但这是我目前选择的答案:
对于单元测试,我曾经在 XCode 4 中使用OCUnit/SenTestingKit。它简单而可靠。但是,我更喜欢 BDD 语言而不是 TDD (Why is RSpec better than Test::Unit?),因为我们的语言创造了我们的世界。所以现在,我使用Kiwi with ARC & Kiwi code completion/autocompletion。我更喜欢 Kiwi 而不是 Cedar,因为它建立在 OCUnit 之上,并带有 RSpec 风格的匹配器和模拟/存根。更新:我现在正在研究 OCMock,因为目前,Kiwi doesn't support stubbing toll-free bridged objects。
对于验收测试,我使用 UI 自动化,因为它很棒。它使您可以记录每个测试用例,从而自动编写测试。此外,Apple 开发了它,因此它有一个充满希望的未来。它也适用于设备和 Instruments,它允许其他很酷的功能,比如显示内存泄漏。不幸的是,使用 UI 自动化,我不知道如何运行 Objective-C 代码,但使用 Frank 和 iCuke,你可以。所以,我将只用单元测试来测试较低级别的 Objective-C 的东西,或者只为 TEST build configuration 创建 UIButtons,当点击它时,它将运行 Objective-C 代码。
您使用哪些解决方案?
相关问题
【问题讨论】:
-
我至少在几个月前就知道关键实验室正在使用雪松。 (嗯,我想这很明显,因为它在他们的 github 帐户上)。在这样的商店的支持下,这将是我的选择。
-
这很好。但是话又说回来,Apple 会建议使用他们的单元测试框架,而不是 Cedar,不是吗?所以,然后是 Pivotal Vs。苹果。选哪个?
-
我写了一篇比较 Frank、KIF 和 UIAutomation 的帖子,这个帖子的读者可能会感兴趣 sgleadow.github.com/blog/2011/10/26/…
标签: iphone ios rspec cucumber ios-ui-automation