DropBear
要求
即将推出
安装
注意:关于安装 DropBearGen
或 DropBearSupport
的信息,请查看各自的 README
。
使用 CocoaPods
只需将以下行添加到您的 Podfile 中的 UI 测试 目标中。
pod 'DropBear'
机器人
即将推出
断言系统
DropBear的断言系统既可以作为当前XCUI测试能力的扩展,也可以搭配DropBear的Robot模式,如上图所示。
当与DropBear的Robot模式一起使用时,断言也变得可链式,在编写测试时既保持了简洁性,又不会失去定位。
为了更好地突出断言系统的特点,我们将其分为两部分。
断言
空
`.empty` 断言用于检查基于 String
的值是否为空。如果 UITextField
的 `placeholder` 值与 UITextField
的当前值匹配,它也将返回 `true`。
示例用法
FooRobot()
.assert(.fooTextField, .empty)
启用的
.enabled
断言是对 element.isEnabled
的简单封装,可以与任何元素类型一起使用。
示例用法
FooRobot()
.assert(.fooButton, .enabled)
等于
.equal
断言会将元素的 value
与断言作为参数接受的另一个值进行比较。目前,可以用来验证的接受类型有 Bool
、Double
、Int
和 String
。
注意:该断言将值比较为 lowercase
,这使得该断言不区分大小写。
示例用法
FooRobot()
.assert(.fooTextField, .equal(to: "Hello, world!"))
存在
.exists
断言会检查指定元素是否存在。默认情况下,使用此断言将等待元素存在5秒,在此之后,如果该元素不存在,则测试将失败。
如果您想覆盖测试等待元素存在的时间,DropBear还提供了实现该功能的机制。
示例用法
FooRobot()
.assert(.fooTextField, .exists) // Will wait for up to 5 seconds for existence
或
FooRobot()
.assert(.fooTextField, .exists(waiting: 10)) // Will wait for up to 10 seconds for existence
包含
.contains
断言会检查元素的 label
和 value
属性是否与断言传入的参数有任何匹配。唯一可接受的参数类型是 String
。
假设我们的示例 UITextField
的值为 Hello, world!
,以下示例用法将断言为 true
。
示例用法
FooRobot()
.assert(.fooTextField, .contains("world"))
操作符
DropBear的断言系统还提供了一些操作符以简化测试编写。
!
!
操作符是一个接收断言作为唯一未命名参数的方法。该操作符反转所接受断言的结果,为您提供类似 not
的结果。
FooRobot()
.assert(.fooTextField, !(.exists))
&&
&&
操作符评估两个或多个断言结果,并且只有当所有结果都为 true
时才断言 true
。
FooRobot()
.assert(.fooTextField, .exists && .contains("world"))
||
||
操作符评估两个或多个断言结果,并且如果任何结果为 true
,则断言 true
。
FooRobot()
.assert(.fooTextField, .exists || .contains("world"))