Miles
围绕XCTest宏的一个轻量级包装,以便使测试更加易于阅读。
Miles是为了解决XCTest可读性问题的一个简单解决方案。
大约每六个月左右,我都会跳上Quick/Kiwi列车(因为我对XCTest的可读性感到沮丧),结果却发现Xcode强加的一些限制让我感到沮丧。Miles是我能想到的解决问题的最简单方法。
Miles的名字来源于Darius Miles,他是一位前职业篮球运动员,曾在2004年的电影《The Perfect Score》中扮演了角色,他与5名学生试图窃取SAT考试。
背景
Apple的Xcode包括XCTest框架,它提供了断言宏来测试代码是否表现正常。例如,为了确定1 + 1 = 2
,XCTest要求您编写
XCTAssertEqual(1 + 1, 2, "expected one plus one to equal two")
在一个更健壮的匹配器框架如Nimble中,您能得到更易读的
expect(1 + 1).to(equal(2))
在Miles中,您能得到我认为更加易读的版本
(1+1).shouldEqual(2)
用法
Miles.swift定义了所有扩展,因此请确保它在您的测试目标中,或者在您尝试测试的类中导入Miles。然后当您想验证5+5等于10时,您可以这样做
func testThatFivePlusFiveEqualsTen() {
10.shouldEqual(5 + 5)
}
如果您想做一些更复杂的事情,比如验证一个特定的字符串有一个后缀,那么它看起来会像这样
func testThatMilesEndsInLes() {
let miles = "miles"
miles.shouldHaveSuffix("les")
}
Miles目前为许多Swift标准类型提供了扩展,包括
- String
- Character
- Int
- Float
- Double
- 布尔类型
- NSObject
由于Swift目前不支持在泛型类型上使用公开扩展,Miles提供全局函数来验证数组、字典和可选类型。
安装
以下说明是取自并改编自Quick,因为它是我所见过的关于与测试目标集成的最佳资源。因此请注意,您将不会拖动Quick和Nimble,而是拖动Miles。
Carthage安装Miles
如何使用由于测试目标没有“嵌入二进制”部分,框架必须添加到目标对象的“链接二进制与库”部分,以及一个“复制文件”的构建阶段,以便将它们复制到目标框架的目的地。
由于Carthage构建动态框架,您需要设置一个有效的代码签名身份。
-
将Miles添加到您的Cartfile.private
github "MadeByHecho/Miles"
-
运行
carthage update
这不是使用Carthage管理依赖的唯一方法,更多参考请查阅Carthage文档