提问



单元测试Objective-C代码有哪些框架?我想要一个与Xcode很好地集成的框架。

最佳参考


Xcode包括XCTest,它类似于OCUnit,一个Objective-C单元测试框架,并且完全支持运行基于XCTest的单元测试作为项目构建过程的一部分.Xcode的单元测试支持在Xcode中描述概述:使用单元测试。[1] [2]


回到Xcode 2天,我写了一系列关于如何使用Xcode单元测试执行一些常见任务的博客文章:



  • 单元测试Cocoa框架

  • 调试Cocoa框架单元测试

  • 单元测试Cocoa应用程序

  • 调试Cocoa应用程序单元测试



尽管使用OCUnit而不是XCTest,但概念基本相同。[3] [4] [5] [6]


最后,我还写了一些关于如何为Cocoa用户界面编写测试的帖子; Cocoa的结构方式使它相对简单,因为在大多数情况下你不必旋转事件循环或类似的东西。



  • 信任,但要验证。

  • 单元测试Cocoa用户界面:Target-Action

  • 单元测试Cocoa用户界面:Cocoa Bindings



这使得不仅可以对模型级代码进行测试驱动开发,还可以对控制器级甚至视图级代码进行测试驱动开发。[7] [8] [9]

其它参考1


查看Gabriel Handford的GHUnit:[10]



  GHUnit的目标是:

  
  在XCode中运行单元测试,允许
  你要充分利用XCode
  调试器。一个简单的GUI来帮助您
  可视化您的测试。显示堆栈
  痕迹。可以作为框架安装
  (对于Cocoa应用程序)简单(或
  不)目标设置;或易于打包
  进入你的iPhone项目。


其它参考2


我开始使用适用于iPhone的Google工具箱测试平台,它的功能非常适合我。


谷歌-工具箱换MAC [11]

其它参考3


查看OCUnit。 Apple的开发者网络有很好的介绍。[12] [13]

其它参考4


请注意,Google Toolbox for Mac(GTM)项目只是扩展/扩充Apple的SenTestingKit框架(它本身基于OCUnit)。正如他们在项目网站上所说:



  GTM有几项增强功能
  标准的SenTestingKit允许你
  做UI单元测试,自动绑定
  单元测试,日志跟踪和单元
  在iPhone上测试,以及
  做静态和动态的工具
  测试你的代码。



请注意以下有关用户界面测试的注释:



  GTM为用户提供广泛的支持
  接口单元测试。它支持
  测试成像和/或
  内部状态几乎全部
  标准的Cocoa/UIKit UI对象,以及
  让您轻松扩展此功能
  支持您自己的UI对象。



有关如何使用它的说明,请参阅代码验证和单元测试页面。[14]

其它参考5


我得出的结论是,GHUnit是Objective-C最先进的测试框架。我在博客上做了一个测试框架的综合。它在部署(iphone,模拟器或mac os native)和断言功能方面是最灵活的。因为它基于GTM,它继承了GTM相对于SenTestingKit的所有优势,但也增加了很多。另一个好处是它正在非常积极地维护。[15]


我已经努力将OCMock整合到GHUnit中,效果很好!你可以在github上获得代码。[16] [17]

其它参考6


我意识到这是一个老问题,但如果您更喜欢BDD风格的测试(rspec,Jasmine等)而不是xUnit风格的测试(Test :: Unit,JSUnit,JUnit等),那么您可以考虑查看Cedar 。 Cedar为Objective-C带来了BDD风格的测试,现在该语言支持闭包。[18]


我们很高兴地将Cedar用于Pivotal Labs的iOS项目,并且我们正积极致力于改进它。如有任何意见或建议,请发送电子邮件至cedar-discuss@googlegroups.com [19]

其它参考7


我还建议使用覆盖工具来查看代码的哪一部分用单元测试覆盖,哪些不用。可以使用GCOV工具生成基本行和分支代码覆盖率。如果你想生成漂亮的HTML覆盖率报告,那么LCOV和ZCOV就是这样做的。[20] [21] [22]

其它参考8


我推荐gh-unit,它有一个很好的GUI测试结果。


http://github.com/gabriel/gh-unit/tree/master[23]

其它参考9


xcode中的单元测试支持(简单设置)与ocrunner(对于某些autotest/Growl良好)相结合,是目前我最喜欢的Obj-C单元测试设置。[24] [25]

其它参考10


这里有很多


Objective-C中的List_of_unit_testing_frameworks [26]

其它参考11


Sen:te(Xcode附带的测试框架的创建者)解释了如何将OCUnit与iPhone项目结合使用:simple-iphone-ipad-unit-test。 [27]

其它参考12


Cocoa with Love的Matt Gallagher有一篇关于单元测试的非常好的文章。[28]

其它参考13


我建议研究一下iOS的开源BDD测试框架Kiwi:
猕猴桃[29]


看看项目的WIKI开始或获得Daniel Steinberg的书用Kiwi测试推动iOS开发
测试驱动IOS-发展[30]

其它参考14


我使用SimpleUnitTest适用于iPhone和iPad库。


http://cbess.blogspot.com/2010/05/simple-iphone-ipad-unit-test.html[31]


它附带一个单元测试Xcode模板,可以轻松添加单元测试类。包装GTM。


您可以将其放入Activity项目中,并在3分钟(或更短时间)内开始添加单元测试。

其它参考15


Specta是一个现代TDD(测试驱动开发)/BDD(行为驱动开发)框架,运行在XCTest之上。它支持iOS和Mac OS X项目的单元测试。 [32]

其它参考16


我希望你可以使用SenTestKit,你可以从中测试每一种方法。