UITestKit 0.1.2

UITestKit 0.1.2

Eric Internicola维护。



UITestKit 0.1.2

UITestKit

用于 UI 测试的 iOS 库

功能

  • 从纯 XCTest 目标进行 UI 测试
    • 启用/禁用 UI 动画
    • 在测试断言失败时获取屏幕截图
    • 使用 waitForCondition 函数以释放 UI 线程并等待您阻塞条件变为真(或者在超时后继续执行)
    • 使用 pauseForUIDebug() 函数以允许您在测试步骤之间暂停一定时间(可配置)
      • shouldPauseUI 为 false(默认值)时,该功能将变更为空操作
    • 变量以获取顶级视图控制器
  • 演示功能的示例应用

Build Status Documentation Platform CocoaPods
CocoaPods CocoaPods

为什么不使用 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会生成类似以下这样的失败

Sample Test Failure with Screenshot

生成的屏幕截图可能看起来像这样

作者

Eric Internicola | Eric的GitHub站点

授权协议

UITestKit遵循MIT授权协议。更多详情请参阅授权文件