适用于 Swift 的 Test Anything Protocol (TAP)
Package.swift
中。import PackageDescription
let package = Package(
// ...
dependencies: [
.Package(
url: "https://github.com/dankogai/swift-tap.git", from: "0.6.0"
)
],
// ...
)
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()
$ 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
检查 predicate
是否为真。
func ok(@autoclosure predicate:()->Bool, _ message:String = "")->Bool
检查 actual
== expected
是否成立。类似于 .ok(actual == expected)
,但在不成立时提供更多信息。
另一方面,actual
和 expected
都必须是 Equatable
。所以
.eq
。.ok
。public func eq<T:Equatable>(actual:T, _ expected:T, _ message:String = "")->Bool
从类型签名可以看出,如果数组和字典是 equatable 的,则 .eq
和 .ne
接受数组和字典。
.eq
的反义词。
public func ne<T:Equatable>(actual:T, _ expected:T, _ message:String = "")->Bool