Miles 2.3.3

Miles 2.3.3

Scott Petit维护。



Miles 2.3.3

Miles

围绕XCTest宏的一个轻量级包装,以便使测试更加易于阅读。

Carthage compatible

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构建动态框架,您需要设置一个有效的代码签名身份。

  1. 将Miles添加到您的Cartfile.private

    github "MadeByHecho/Miles"
    
  2. 运行carthage update

  3. 从您的Carthage/Build/[platform]/目录中,将Miles添加到测试目标的链接二进制与库构建阶段

  4. 为您测试目标创建新的类型为复制文件的构建阶段

  5. 目的地设置为框架,然后添加Miles框架

这不是使用Carthage管理依赖的唯一方法,更多参考请查阅Carthage文档