332

有哪些框架可以对 Objective-C 代码进行单元测试?我想要一个与 Apple Xcode 完美集成的框架。

4

17 回答 17

317

Xcode 包含 XCTest,它类似于OCUnit,一个 Objective-C 单元测试框架,并且完全支持在项目构建过程中运行基于 XCTest 的单元测试。Xcode 的单元测试支持在Xcode 概述:使用单元测试中进行了描述。

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

尽管使用的是 OCUnit 而不是 XCTest,但概念大致相同。

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

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

于 2008-08-28T19:52:25.617 回答
50

查看Gabriel Handford 的GHUnit

“GHUnit 的目标是:

在 XCode 中运行单元测试,让您充分利用 XCode 调试器。一个简单的 GUI,可帮助您可视化您的测试。显示堆栈跟踪。可以通过简单(或不)目标设置作为框架(用于 Cocoa 应用程序)安装;或轻松打包到您的 iPhone 项目中。”

于 2009-02-25T13:53:55.363 回答
18

我开始使用适用于 iPhone 的 Google 工具箱测试平台,它对我来说非常有用。

谷歌工具箱 for-mac

于 2008-11-19T16:59:00.810 回答
13

查看OCUnit。苹果的开发者网络有很好的介绍

于 2008-08-28T19:46:10.937 回答
12

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

GTM 对标准 SenTestingKit 进行了多项增强,允许您在 iPhone 上进行 UI 单元测试、自动绑定单元测试、日志跟踪和单元测试,以及用于对代码进行静态和动态测试的工具。

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

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

有关如何使用它的说明,请参阅他们的“代码验证和单元测试”页面。

于 2009-03-02T19:02:15.407 回答
12

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

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

于 2009-10-24T17:48:12.073 回答
12

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

我们很高兴将 Cedar 用于Pivotal Labs的 iOS 项目,并且我们正在积极改进它。欢迎通过 cedar-discuss@googlegroups.com 提供任何反馈或建议

于 2010-11-23T07:25:22.823 回答
10

我还建议使用覆盖工具来查看代码的哪些部分被单元测试覆盖,哪些没有。可以使用GCOV工具生成基本的行和分支代码覆盖率。如果你想生成漂亮的 HTML 覆盖率报告,有LCOVZCOV可以做到这一点。

于 2009-03-14T21:47:00.323 回答
7

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

于 2009-01-18T15:32:52.077 回答
7

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

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

于 2009-03-14T21:57:19.127 回答
7

xcode 中捆绑的单元测试支持(用于其简单设置)与ocrunner(用于一些自动测试/咆哮的好处)相结合是目前我最喜欢的 Obj-C 单元测试设置。

于 2010-08-10T05:58:07.770 回答
7

这里有很多

Objective-C 中的 List_of_unit_testing_frameworks

于 2011-04-26T03:43:51.467 回答
6

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

于 2009-12-23T18:39:28.400 回答
5

我建议研究一下 Kiwi,这是一个适用于 iOS 的开源 BDD 测试框架: Kiwi

查看项目的 WIKI 以开始或获取 Daniel Steinberg 的书“Test Driving iOS Development with Kiwi” test-driving-ios-development

于 2013-02-23T23:28:38.020 回答
4

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

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

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

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

于 2010-05-18T23:52:09.987 回答
3

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

于 2014-03-15T16:05:04.413 回答
0

我希望您可以使用“SenTestKit”,您可以从中测试每种方法。

于 2013-06-14T13:48:05.463 回答