iOS测试/规格TDD / BDD和集成&验收测试

时间:2010-11-06 16:54:28

标签: iphone ios rspec cucumber ios-ui-automation

iPhone上用于行为驱动开发的最佳技术是什么?什么是一些开源示例项目,证明了这些技术的合理使用?以下是我发现的一些选项:


Unit Testing

Test::Unit样式

  1. OCUnit/SenTestingKit,如iOS Development Guide: Unit Testing Applications&其他OCUnit references
  2. CATCH
  3. GHUnit
  4. Google Toolbox for Mac: iPhone Unit Testing
  5. RSpec样式

    1. Kiwi(也带有嘲弄和期望)
    2. Cedar
    3. JasmineUI Automation dexterous' iOS-Acceptance-Testing specs
    4. 所示

      Acceptance Testing

      Selenium样式

      1. UI自动化(适用于设备)

        更新:Zucchini Framework似乎混合了Cucumber& UI自动化! :)

        旧博客帖子:

      2. UISpecUISpecRunner

      3. FoneMonkey

      4. Cucumber样式

        1. FrankiCuke(基于Cucumber meets iPhone talk

        2. KIF (Keep It Functional) Square

        3. Zucchini Framework使用Cucumber语法编写测试,并使用CoffeeScript进行步骤定义。

        4. 附加

          结论

          嗯,显然,这个问题没有正确的答案,但这是我现在选择的目标:

          对于单元测试,我曾经在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创建UIButton,单击它时将运行Objective-C代码。

          您使用哪种解决方案?

          相关问题

8 个答案:

答案 0 :(得分:53)

答案 1 :(得分:8)

我将不得不将Frank投入验收测试组合。这是一个相当新的补充,但到目前为止对我来说非常好。此外,它实际上正在积极地工作,不像icuke和其他人。

答案 2 :(得分:5)

对于测试驱动开发,我喜欢使用GHUnit,它可以轻松设置,并且非常适合调试。

答案 3 :(得分:4)

好名单!

我找到了另一个有趣的UI应用程序测试解决方案。

Zucchini Framework

它基于UIAutomation。 该框架允许您在Cucumber中编写以屏幕为中心的场景。 场景可以在模拟器中执行,也可以在控制台的设备上执行(它是CI友好的)。

断言是基于屏幕截图的。听起来不灵活,但它可以为您提供漂亮的HTML报告,突出显示屏幕比较,您可以提供定义区域以确保像素精确断言的区域。

必须在CoffeScript中描述每个屏幕,并且它自己的工具是用红宝石编写的。 这是一种多角色的噩梦,但该工具为UIAutomation提供了一个很好的抽象,当描述屏幕时,即使对于QA人来说也是可以管理的。

答案 4 :(得分:2)

我会选择iCuke进行验收测试,选择Cedar进行单元测试。 UIAutomation是Apple迈向正确方向的一步,但这些工具需要更好的支持持续集成;例如,目前无法使用仪器自动运行UIAutomation测试。

答案 5 :(得分:1)

GHUnit适用于单元测试;对于集成测试,我已经使用UISpec取得了一些成功(github fork here https://github.com/drync/UISpec),但我期待尝试iCuke,因为它承诺是一个轻量级的设置,你可以使用rails测试的优点,像RSpec和Cucumber。

答案 6 :(得分:1)

我目前使用specta进行类似rspec的设置,它是合作伙伴(如上所述)expecta,它有很多很棒的匹配选项。

答案 7 :(得分:0)

我碰巧真的很喜欢OCDSpec2,但我有偏见,我写过OCDSpec并为第二个做出贡献。

即使在iOS上它也非常快,部分原因是它是从头开始构建的,而不是放在OCUnit之上。它也有RSpec / Jasmine语法。

https://github.com/ericmeyer/ocdspec2