unit testingObjective-C代码的最好方法是什么?

unit testingObjective-C代码有什么框架? 我想要一个与Xcode很好地集成的框架。

Xcode包含XCTest,它类似于OCUnit ,一个Objective-Cunit testing框架,并且完全支持基于XCTest的unit testing作为项目构build过程的一部分。 Xcode的unit testing支持在Xcode概述:使用unit testing中有描述 。

回到Xcode的两天,我写了一系列有关如何使用Xcodeunit testing执行一些常见任务的博客文章:

  • unit testingcocoa框架
  • debuggingCocoa框架unit testing
  • unit testingcocoa应用程序
  • debuggingCocoa应用程序unit testing

尽pipe使用OCUnit而不是XCTest,但概念基本相同。

最后,我还写了一些关于如何编写Cocoa用户界面testing的文章。 Cocoa的结构使其相对简单,因为在大多数情况下,您不必旋转事件循环或类似的东西。

  • 信任但要validation。
  • unit testingCocoa用户界面:Target-Action
  • unit testingcocoa用户界面:cocoa绑定

这使得为​​testing驱动开发不仅可以实现模型级代码,而且还可以实现控制器级甚至视图级代码。

查看Gabriel Handford的GHUnit :

“GHUnit的目标是:

在XCode中运行unit testing,使您可以充分利用XCodedebugging器。 一个简单的graphics用户界面来帮助你可视化你的testing 显示堆栈跟踪。 可以通过一个简单的(或不是)目标设置作为框架(对于Cocoa应用程序)来安装; 或者很容易打包到你的iPhone项目中。“

我开始使用iPhone的Google工具箱testing平台,它对我来说非常好。

谷歌工具箱换MAC

检查OCUnit 。 苹果的开发者networking有一个很好的介绍 。

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

GTM对标准SenTestingKit进行了几项改进,允许您在iPhone上进行UIunit testing,自动绑定unit testing,日志跟踪和unit testing,以及对代码进行静态和dynamictesting的工具。

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

GTM对用户界面unit testing有广泛的支持。 它支持testing几乎所有的标准Cocoa / UIKit UI对象的成像和/或内部状态,并使您可以轻松地将这种支持扩展到您自己的UI对象。

有关如何使用它的说明,请参阅他们的“ 代码validation和unit testing ”页面。

我得出的结论是,GHUnit是Objective-C最先进的testing框架。 我在博客上做了一个testing框架的综述 。 这是部署(iPhone,模拟器或Mac OS本机)和断言function方面最灵活的。 因为它基于GTM,它比SenTestingKitinheritance了所有GTM的优势,但是也增加了更多。 另外一个好处就是它的维护非常积极。

我已经努力将OCMock整合到GHUnit中,它工作的很棒! 你可以在github上获得代码。

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

我们很高兴在Pivotal Labs为我们的iOS项目使用Cedar,我们正在积极努力改进它。 任何意见或build议,欢迎在cedar-discuss@googlegroups.com

我还build议使用覆盖工具来查看代码的哪一部分覆盖了unit testing,哪些不是。 基本的行和分支代码覆盖可以使用GCOV工具生成。 如果你想生成好的HTML覆盖率报告,那么LCOV和ZCOV就是这么做的。

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

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

unit testing支持捆绑在Xcode (为了简单的设置)与ocrunner (对于一些自动testing/咆哮善良)结合,目前是我最喜欢的Obj-Cunit testing设置。

这里有很多

Objective-C中的List_of_unit_testing_frameworks

Sen:te(Xcode包含的testing框架的创build者)解释了如何在iPhone项目中使用OCUnit: simple-iphone-ipad-unit-test 。

Cocoa with Love的Matt Gallagher在unit testing方面有非常好的文章 。

我build议看看Kiwi,iOS的开源BDDtesting框架: Kiwi

查看该项目的WIKI,以启动或获取Daniel Steinberg的书“用Kiwitesting驾驶iOS开发” test-driving-ios-development

我使用SimpleUnitTest与iPhone和iPad库一起工作。

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

它带有一个unit testingXcode模板,可以轻松添加一个unit testing类。 包裹GTM。

你可以直接把它放到一个活动的项目中,并在3分钟(或更less)内开始添加unit testing。

Specta是在XCTest上运行的现代TDD(testing驱动开发)/ BDD(行为驱动开发)框架。 它支持iOS和Mac OS X项目的unit testing。

我希望你可以使用“SenTestKit”,从中你可以testing每一个方法。