单元测试Objective-C代码的最佳方法是什么?

时间:2008-08-28 19:41:30

标签: objective-c cocoa unit-testing xcode

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

17 个答案:

答案 0 :(得分:317)

Xcode包括XCTest,它类似于OCUnit,一个Objective-C单元测试框架,并且完全支持在项目的构建过程中运行基于XCTest的单元测试。 Xcode的单元测试支持在Xcode Overview: Using Unit Tests

中描述

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

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

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

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

答案 1 :(得分:50)

查看Gabriel Handford的GHUnit

  

“GHUnit的目标是:

     

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

答案 2 :(得分:18)

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

google-toolbox-for-mac

答案 3 :(得分:13)

结帐OCUnit。 Apple的开发者网络有a great introduction

答案 4 :(得分:12)

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

我已经努力将OCMock集成到GHUnit中,效果很好!您可以在github上获取代码。

答案 5 :(得分:12)

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

我们很高兴在Pivotal Labs为我们的iOS项目使用Cedar,我们正积极致力于改进它。欢迎提出任何反馈或建议,请发送电子邮件至cedar-discuss@googlegroups.com

答案 6 :(得分:12)

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

  

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

请注意以下关于用户界面测试的评论:

  

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

有关如何使用它的说明,请参阅“Code Verification and Unit Testing”页面。

答案 7 :(得分:10)

我还建议使用覆盖工具来查看代码的哪一部分用单元测试覆盖,哪些不用。可以使用GCOV工具生成基本行和分支代码覆盖率。如果您想要生成精美的HTML覆盖率报告,可以LCOVZCOV执行此操作。

答案 8 :(得分:7)

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

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

答案 9 :(得分:7)

Unit Testing support bundled within xcode(简单设置)与ocrunner(对于某些自动测试/低吼感)相结合,是目前我最喜欢的Obj-C单元测试设置。

答案 10 :(得分:7)

Sen:te(Xcode附带的测试框架的创建者)解释了如何将OCUnit用于iPhone项目:simple-iphone-ipad-unit-test

答案 11 :(得分:7)

答案 12 :(得分:6)

Cocoa with Love的Matt Gallagher在单元测试中有very good article

答案 13 :(得分:5)

我建议研究一下iOS的开源BDD测试框架Kiwi: Kiwi

查看该项目的WIKI开始或获取Daniel Steinberg的书“用Kiwi测试推动iOS开发” test-driving-ios-development

答案 14 :(得分:4)

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

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

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

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

答案 15 :(得分:3)

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

答案 16 :(得分:0)

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