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结果。
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每一个方法。