在iPhone上进行行为驱动开发最好的技术是什么?有哪些开源项目可以证明这些技术的合理使用呢?以下是我找到的一些选择:


单元测试

测试:单元的风格

OCUnit/SenTestingKit如iOS开发指南:单元测试应用程序和其他OCUnit参考中所述。 示例:iPhoneUnitTests, Three20 抓 GHUnit 谷歌工具箱Mac: iPhone单元测试

RSpec 风格

猕猴桃(也带有嘲讽和期待) 雪松 Jasmine与UI自动化显示在灵巧的ios -验收-测试规格


验收测试

硒的风格

UI Automation (works on device) UI Automation Instruments Guide UI Automation reference documentation Tuneup js - cool library for using with UIAutomation. Capturing User Interface Actions into Automation Scripts It's possible to use Cucumber (written in JavaScript) to drive UI Automation. This would be a great open-source project. Then, we could write Gherkin to run UI Automation testing. For now, I'll just write Gherkin as comments. UPDATE: Zucchini Framework seems to blend Cucumber & UI Automation! :) Old Blog Posts: Alex Vollmer's UI Automation tutorial O'Reilly Answers UI Automation tutorial Adi Saxena's UI Automation tutorial UISpec with UISpecRunner UISpec is open source on Google Code. UISpec has comprehensive documentation. FoneMonkey

黄瓜风格

Frank and iCuke (based on the Cucumber meets iPhone talk) The Frank Google Group has much more activity than the iCuke Google Group. Frank runs on both device and simulator, while iCuke only runs in simulator. Frank seems to have a more comprehensive set of step definitions than iCuke's step definitions. And, Frank also has a step definition compendium on their wiki. I proposed that we merge iCuke & Frank (similar to how Merb & Rails merged) since they have the same common goal: Cucumber for iOS. KIF (Keep It Functional) by Square Zucchini Framework uses Cucumber syntax for writing tests and uses CoffeeScript for step definitions.

添加

OCMock用于嘲弄 OCHamcrest和/或Expecta表示期望

结论

很明显,这个问题没有正确答案,但这是我目前的选择:

对于单元测试,我曾经在XCode 4中使用OCUnit/SenTestingKit。它简单而可靠。但是,比起TDD,我更喜欢BDD语言(为什么RSpec比Test::Unit好?),因为我们的语言创造了我们的世界。所以现在,我使用ARC和Kiwi代码完成/自动完成。比起雪松,我更喜欢Kiwi,因为它是建立在OCUnit之上的,并且带有rspec风格的匹配器和模拟/存根。更新:我现在正在寻找OCMock,因为,目前,Kiwi不支持存根免费桥接对象。

For acceptance testing, I use UI Automation because it's awesome. It lets you record each test case, making writing tests automatic. Also, Apple develops it, and so it has a promising future. It also works on the device and from Instruments, which allows for other cool features, like showing memory leaks. Unfortunately, with UI Automation, I don't know how to run Objective-C code, but with Frank & iCuke you can. So, I'll just test the lower-level Objective-C stuff with unit tests, or create UIButtons only for the TEST build configuration, which when clicked, will run Objective-C code.

你使用哪些解决方案?

相关问题

目前有没有一种BDD解决方案能在iOS4和Xcode4上很好地工作? SenTestingKit(与XCode集成)与XCode 4上的GHUnit进行单元测试? 使用OCunit在iOS上测试异步代码 SenTestingKit在Xcode 4:异步测试? iPhone上的单元测试是如何进行的?


当前回答

我会选择iCuke进行验收测试,选择Cedar进行单元测试。用户界面自动化是苹果朝着正确方向迈出的一步,但该工具需要更好的持续集成支持;例如,使用Instruments自动运行ui自动化测试目前是不可能的。

其他回答

伟大的列表!

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

西葫芦框架

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

断言是基于屏幕截图的。听起来不灵活,但它给你很好的HTML报告,突出显示屏幕比较,你可以提供掩码,定义你想要有精确像素断言的区域。

每个屏幕都必须用CoffeScript描述,工具本身是用ruby编写的。 这是一种多门语言的噩梦,但该工具为ui自动化提供了一个很好的抽象,当屏幕被描述时,即使是QA人员也可以管理。

对于测试驱动的开发,我喜欢使用GHUnit,它的设置很简单,而且对调试也很有用。

我将不得不把Frank放到验收测试中。这是一个相当新的添加,但已经为我工作出色到目前为止。另外,与icuke和其他版本不同,它实际上正在积极开发中。

我会选择iCuke进行验收测试,选择Cedar进行单元测试。用户界面自动化是苹果朝着正确方向迈出的一步,但该工具需要更好的持续集成支持;例如,使用Instruments自动运行ui自动化测试目前是不可能的。

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

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

https://github.com/ericmeyer/ocdspec2