iPhone上用于行为驱动开发的最佳技术是什么?什么是一些开源示例项目,证明了这些技术的合理使用?以下是我发现的一些选项:
UI自动化(适用于设备)
Capturing User Interface Actions into Automation Scripts
可以使用Cucumber (written in JavaScript)来推动UI自动化。这将是一个伟大的开源项目。然后,我们可以编写Gherkin来运行UI自动化测试。现在,我只会写Gherkin作为评论。
更新:Zucchini Framework似乎混合了Cucumber& UI自动化! :)
旧博客帖子:
Frank和iCuke(基于Cucumber meets iPhone talk)
Zucchini Framework使用Cucumber语法编写测试,并使用CoffeeScript进行步骤定义。
嗯,显然,这个问题没有正确的答案,但这是我现在选择的目标:
对于单元测试,我曾经在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代码。
您使用哪种解决方案?
答案 0 :(得分:53)
答案 1 :(得分:8)
我将不得不将Frank投入验收测试组合。这是一个相当新的补充,但到目前为止对我来说非常好。此外,它实际上正在积极地工作,不像icuke和其他人。
答案 2 :(得分:5)
对于测试驱动开发,我喜欢使用GHUnit,它可以轻松设置,并且非常适合调试。
答案 3 :(得分:4)
好名单!
我找到了另一个有趣的UI应用程序测试解决方案。
它基于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)
答案 7 :(得分:0)
我碰巧真的很喜欢OCDSpec2,但我有偏见,我写过OCDSpec并为第二个做出贡献。
即使在iOS上它也非常快,部分原因是它是从头开始构建的,而不是放在OCUnit之上。它也有RSpec / Jasmine语法。