❤️ 支持我的应用 ❤️
❤️❤️😇😍🤘❤️❤️
Spek 是一个轻量级的函数构建器风格的行为驱动开发框架,设计用于 XCTest
XCTest
框架。
import XCTest
@testable import Spek
final class SpekTests: XCTestCase {
func testExample() {
var left = 1
var right = 1
spec {
Describe("math") {
BeforeEach {
left = 2
}
Describe("basic") {
BeforeEach {
right = 3
}
AfterEach {
}
It("adds correctly") {
XCTAssertEqual(left + right, 5)
}
It("multiplies correctly") {
XCTAssertEqual(left * right, 6)
}
}
}
}
}
}
X
前缀,例如 XDescribe
、XIt
等...do try catch
BeforeAll
和 AfterAll
在所有包含它们的 Describe
和 It
之前和之后运行BeforeEach
和 AfterEach
在所有包含它们的 It
之前和之后运行Context
的行为与 Describe
相同当你有一个未完成的代码块时,你可以使用 X
前缀来代替注释掉它,这样它就不会被执行
Describe("math") {
It("will be run") {
}
XIt("won't be run") {
}
}
Spek 使用 Swift 5.1 函数构建器,因此你只能声明代码块和嵌套代码块。要在子规范中声明局部变量,你需要使用 Sub
并显式返回 Describe
Describe("math") {
Describe("advanced") {
}
Sub {
let abc = 1
let def = 2
return Describe("extra") {
It("should add") {
XCTAssertEqual(abc + def, 2)
}
}
}
}
默认情况下,spec
方法直接运行测试,要生成测试用例,你需要重写 makeDescribe
。
继承 SpekTestCase
并重写 makeDescribe
方法,Spek 将转换你的 Describe
描述并生成 XCTestCase
方法。它也会为嵌套的 Describe
和 Sub
生成测试方法。
例如,下面的测试将生成 test_math_should_work
和 test_math_advanced_should_calculate
方法
import XCTest
import Spek
class GenerateTestCaseTests: SpekTestCase {
override class func describe() -> Describe {
Describe("math") {
It("should work") {
XCTAssertTrue(1 + 1 == 2)
}
Describe("advanced") {
It("should calculate") {
XCTAssertEqual(2 * 5, 10)
}
}
}
}
}
Spek 使用 Swift Package Manager 分发。要将其安装到项目中,请将其作为依赖项添加到你的 Package.swift 清单文件中
let package = Package(
...
dependencies: [
.package(url: "https://github.com/onmyway133/Spek.git", from: "0.5.0")
],
...
)
然后在你的 XCTest 中导入 Spek
import Spek
Khoa Pham, onmyway133@gmail.com
Spek 在 MIT 许可证下可用。有关更多信息,请参阅 LICENSE 文件。