UITestKit
用于 UI 测试的 iOS 库
功能
- 从纯
XCTest
目标进行 UI 测试- 启用/禁用 UI 动画
- 在测试断言失败时获取屏幕截图
- 使用
waitForCondition
函数以释放 UI 线程并等待您阻塞条件变为真(或者在超时后继续执行) - 使用
pauseForUIDebug()
函数以允许您在测试步骤之间暂停一定时间(可配置)- 当
shouldPauseUI
为 false(默认值)时,该功能将变更为空操作
- 当
- 变量以获取顶级视图控制器
- 演示功能的示例应用
为什么不使用 XCUITests?
- UITestKit 允许您从测试代码直接与应用程序代码交互
- 更容易模拟模型对象
- 更容易调用 ViewControllers
- 可以以更低的级别访问应用程序
- UITestKit 提供便捷变量以从失败中获取屏幕截图
- UITestKit 的限制远小于 XCUITests
示例
要运行示例项目,请先克隆仓库,然后从Example目录运行pod install
。
要求
- iOS 9.0或更高版本
安装
UITestKit可以通过CocoaPods获得。要安装它,只需将以下行添加到Podfile中
pod 'UITestKit'
代码示例
///
最佳实践
- 建议创建一个
BaseUITest
类,该类专门扩展UITestKitBase
并为您的应用程序的视图控制器提供便利变量
/// Gets you the `SquareTabVC` if it's the topVC
var squareTabVC: SquareTabVC? {
return topVC as? SquareTabVC
}
/// Gets the `ShapesTableViewController`
var shapeTableVC: ShapesTableViewController? {
return topVC as? ShapesTableViewController
}
- 建议在检查特定UI是否可见或处于特定UI状态时使用屏幕截图功能
XCTAssertTrue(waitForCondition({ self.shapeTableVC != nil }, timeout: 1), topVCScreenshot)
topVCScreenshot
会生成类似以下这样的失败
生成的屏幕截图可能看起来像这样
作者
Eric Internicola | Eric的GitHub站点
授权协议
UITestKit遵循MIT授权协议。更多详情请参阅授权文件。