Spek

❤️ 支持我的应用 ❤️

❤️❤️😇😍🤘❤️❤️

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 前缀来代替注释掉它,这样它就不会被执行

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)
            }
        }
    }
}

生成 XCTestCase

默认情况下,spec 方法直接运行测试,要生成测试用例,你需要重写 makeDescribe

继承 SpekTestCase 并重写 makeDescribe 方法,Spek 将转换你的 Describe 描述并生成 XCTestCase 方法。它也会为嵌套的 DescribeSub 生成测试方法。

例如,下面的测试将生成 test_math_should_worktest_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 文件。