build status

swift-tap

适用于 Swift 的 Test Anything Protocol (TAP)

用法

  1. 将此项目添加到您的 Package.swift 中。
import PackageDescription
let package = Package(
  // ...
  dependencies: [
    .Package(
      url: "https://github.com/dankogai/swift-tap.git", from: "0.6.0"
    )
  ],
  // ...
)
  1. 如下编写 [main.swift]
import TAP
let test = TAP(tests:3)
test.ok(42+0.195 == 42.195, "42 + 0.195 == 42.195") // ok 1 - 42 + 0.195 == 42.195
test.eq(42+0.195,   42.195, "42 + 0.195 is 42.195") // ok 2 - 42 + 0.195 is 42.195
test.ne(42+0.195,   42,     "42 + 0.195 is not 42") // ok 3 - 42 + 0.195 is not 42
test.done() 
  1. 如下构建和测试
$ swift run && prove .build/debug/main
./main .. ok   
All tests successful.
Files=1, Tests=2,  0 wallclock secs ( 0.02 usr +  0.00 sys =  0.02 CPU)
Result: PASS

./main 实际上会输出以下内容

1..3
ok 1 - 42 + 0.195 == 42.195
ok 2 - 42 + 0.195 is 42.195
ok 3 - 42 + 0.195 is not 42

无计划测试

您应该通过 TAP(tests:Int).plan(_:Int) 指定要运行的测试数量,但这是可选的。但是,当您这样做时,您不能省略 .done(),它会输出 TAP 协议要求的 1..number_of_tests

ok 1 - 42 + 0.195 == 42.195
ok 2 - 42 + 0.195 is 42.195
ok 3 - 42 + 0.195 is not 42
1..2

.ok, .eq.ne

.ok

检查 predicate 是否为真。

func ok(@autoclosure predicate:()->Bool, _ message:String = "")->Bool

.eq

检查 actual == expected 是否成立。类似于 .ok(actual == expected),但在不成立时提供更多信息。

另一方面,actualexpected 都必须是 Equatable。所以

public func eq<T:Equatable>(actual:T, _ expected:T, _ message:String = "")->Bool

从类型签名可以看出,如果数组和字典是 equatable 的,则 .eq.ne 接受数组和字典。

.ne

.eq 的反义词。

public func ne<T:Equatable>(actual:T, _ expected:T, _ message:String = "")->Bool

为什么不用 XCTest

另请参阅