Xcode 5//iOS 6 和 7//TDD:OCUnit 或 XCTest

Posted

技术标签:

【中文标题】Xcode 5//iOS 6 和 7//TDD:OCUnit 或 XCTest【英文标题】:Xcode 5//iOS 6 and 7//TDD: OCUnit or XCTest 【发布时间】:2014-01-22 09:03:40 【问题描述】:

我是一名软件工程专业的学生,​​参加了一个实习课程,其中一个学生小组与第三方客户合作解决问题。我的团队被分配了一个涉及编写 ios 程序的项目。我们都没有做过任何 iOS 编程。我们正在如饥似渴地阅读,但需要尽快跟上进度,因为这个学期只有 15 周。

我的问题是关于测试框架的。我们的团队计划使用 TDD。我们的 iOS 应用程序需要支持 iOS 6 和 7。我想我在某处读到 XCTest 仅支持 iOS 7,并且我们需要使用 OCUnit 才能支持 iOS 6。这是真的吗?我们如何编写一个同时支持 iOS 6 和 7 的应用程序?是否像将部署目标设置为 iOS 6.0 并且不使用 iOS 6.0 之后引入的任何 API 一样简单?

【问题讨论】:

我们还没有写任何代码。我们仍在尝试确定如何设置我们的环境。 我会推荐阅读meta.stackexchange.com/questions/182266/… 鉴于您的经验和时间限制,支持 iOS 6 iOS 7 可能过于雄心勃勃。 UI 完全不同,这需要特别考虑,因此会花费大量资源。为了增加这个项目成功的可能性,只关注 iOS 7,并且只有在有时间的情况下,向后移植一个 iOS 6 的版本,可能会有一个完全不同的 UI。跨度> 感谢您的建议,@CouchDeveloper。如果我们一开始只为 iOS 7 编写测试,是否需要用 OCUnit 编写测试,以使某人(我们或以后的其他团队)能够轻松地将测试代码移植到 iOS 6? YAGNI 会指向我们使用 XCTest 并在需要时切换,但如果可以通过使用 OCUnit 使测试适用于 iOS 6 和 7,那么我认为这样做是明智的。再次感谢您的建议——非常感谢。 XCTest 与 OCUnit 非常相似。将用 XCTest 编写的测试重写为 OCUnit 并不费力。另一方面,XCTest 没有提供比 OCUnit 更多的功能,因此您可以很好地在 OCUnit 中编写测试。 ;) 两种测试工具都不是很好 - 但集成到 Xcode 中很好。 【参考方案1】:

您可以针对 iOS 6 及更高版本,但如果您使用 XCTest,您将只能在 iOS 7 上运行测试。

【讨论】:

【参考方案2】:

我相信您仍然可以使用 XCTest,但我建议您在研究中查看 Kiwi (https://github.com/allending/Kiwi)。它基本上用宏包装了您选择的任何框架(xctest/octest),为您提供规范风格的测试选项。此外,它还具有极其强大的模拟/存根支持,这在单元测试中是必不可少的。

【讨论】:

虽然这并没有完全回答我的问题,但我还是 +1 了它,因为它非常有帮助。我们尝试了 Kiwi,但无法让它发挥作用,但我们的研究让我们找到了类似的 Cedar (github.com/pivotal/cedar)。

以上是关于Xcode 5//iOS 6 和 7//TDD:OCUnit 或 XCTest的主要内容,如果未能解决你的问题,请参考以下文章

Xcode 5、iOS7 和 64 位与 32 位

Xcode 5.1 - iOS 7.1 错误

横向应用 Xcode 5 / iOS 7

Xcode 5 / iOS7:尝试添加约束以在 iPhone 3.5" 和 4" 屏幕之间调整大小

Xcode 5 ios 7 中的自动布局。如何创建适用于 iphone 4 和 iphone 5 的应用程序

仪器显示内存泄漏 - Xcode 5 / iOS7