从OCUnit过渡到XCTest

XCTestXcode5中新引入的一个测试框架。XCTest是上一代现代化测试框架OCUnit的重新现代化实现。XCTest提供了与Xcode更好的集成并且奠定了未来改进Xcode测试能力的基础。XCTest的许多的功能都类似于之前的OCUnit

OCUnit和XCTest兼容性

自 Xcode2.1 以来,OCUnit都是 Xcode测试的基础,很多现有的项目都是基于OCUnit测试。它们可以继续使用,因为 Xcode 5为基于OCUnitXCTest 的两种项目提供了等同的功能。

将基于OCUnit测试的现有项目从 Xcode 5 之前的版本添加进 Xcode 5中时,项目会兼容当前 iOS 和 OS X 版本,同样的,iOS 7之前的版本以及 OS X v10.8 之前的版本也是如此。

基于OCUnit的测试可以在 iOS 6 和 iOS 7 上运行,所以针对iOS 和 OS X 旧版本的项目仍然能有效地选择使用 OCUnit。当你需要把项目从 Xcode 5 回归至早期版本的Xcode,并对应用程序进行维护时,这也不失为一个很好的选择。

如果你的项目开发工作主要集中于 iOS 7 或更高版本,或在 OS X v10.8 或更高版本,或两者兼而有之,把项目转为使用XCTest 将是一个正确的选择。

注意:OCUnit 在 Xcode 5.1 中被标记为已过时。

从OCUnit过渡至XCTest

从 OCUnit 到 XCTest 的转换是一个复杂的操作,包括更新源文件,其中包括测试类和修改项目配置设置。Xcode5 中有一个转换工作流程的助手可帮你实现这些转换,选择 Edit > Refactor > Convert OCUnit to XCTest。使用该工具来成功地将项目迁移使用 XCTest。

OCUnit 到 XCTest 转换工具是基于target-by-target的。该工具会检查你选择的目标,并且在执行自动转换后让你知道它们是否可以用XCTest运行。

注意:建议您在进行OCUnitXCTest的迁移时,将所有目标放到一个项目中。

更新项目OCUnitXCTest

1.选择 Edit > Refactor > Convert OCUnit to XCTest。

2.点击下一步,进入到下一个工作表。

3.在出现的表单中,选择要转换的测试目标。

从OCUnit过渡到XCTest - 图1

4.要查看一个特定的目标是否能与 XCTest 转换,请单击其名称。

5.单击下一步按钮。

助手弹出了一个FileMerge界面,您可以评估其他来源的变化。

从OCUnit过渡到XCTest - 图2

左边是更新后的源文件,右边是原始文件。你可以浏览所有可能的变化,并丢弃那些你觉得有问题的代码。

6.如果你对所有的更改都满意,就可以单击保存按钮。

Xcode会把更改写入文件。

当转换完成,运行测试目标,并检查其输出,以确保测试按预期运行。如果出现任何问题,请参阅“Debugging Tests”一章来查看帮助。