Observe 是一个 Swift 4 的 BDD / TDD 测试框架,它与 Focus 断言框架配合使用效果极佳。
Observe 和 Focus 不 依赖于任何其他框架,因此您可以将此包包含在您的测试或主应用程序代码中。
打开您的 Package.Swift
文件并添加以下依赖项
dependencies: [
.package(url: "https://github.com/ObserveSocial/Observe.git", from: "0.4.0")
]
在终端运行 swift build
来获取这个新的依赖项。
import Observe
import XCTest
import Observe
class SimpleTest: XCTestCase {
func testSpec() {
describe("Person") {
context("Initialize a new Person") {
var person: Person!
beforeEach {
person(name: "Sam")
}
it("should be called sam") {
XCTAssertEqual(person.name, "Sam")
}
}
}
}
}
describe("") {}
context("") {}
it("") {}
given("") {}
when("") {}
then("") {}
and("") {}
beforeEach {}
报告器定义了输出如何记录到控制台。
Observe 定义了一个 Reportable
协议,您可以实现它来自定义测试输出的记录方式。 默认情况下,Observe 使用它自己非常简单的报告器。 还有一个 Clean Reporter,我们建议您使用。
如果您想构建自己的报告器,只需创建一个新类型并使其符合 Reportable
协议。 然后告诉 Observe 使用您的自定义报告器。
import XCTest
import Observe
class MyReporter: Observe.Reportable {
let sharedInstance = MyReporter()
func willRunBlock(file: StaticString, method: String, line: UInt, message: String, blockType: BlockType, indentationLevel: Int) {
print(message)
}
func didRunBlock(file: StaticString, method: String, line: UInt, message: String, blockType: BlockType, indentationLevel: Int) {
}
}
class SimpleTest: XCTestCase {
override class func setUp() {
super.setUp()
let reporter = MyReporter.sharedInstance
Observe.set(reporter: reporter)
}
func testSpec() {
describe("Person") {
...
}
}
}
class AnotherSimpleTest: XCTestCase {
override class func setUp() {
super.setUp()
let reporter = MyReporter.sharedInstance
Observe.set(reporter: reporter)
}
...
}
让您的报告器成为单例可能很有用,这样您就可以在多个测试之间共享状态。 这将允许您跟踪诸如执行了多少测试之类的统计信息。
描述应用程序的行为,而不是验证代码。
Observe 完全不依赖于 XCTest,事实上 Observe 永远不会依赖于 Foundation
以外的任何框架。
这意味着您永远不必担心将任何其他框架导入到您的代码中。 这也意味着您可以在应用程序的测试或应用程序的核心代码中使用此框架。
所有开发者都应该感到欢迎并鼓励为 Observe 做出贡献,请参阅我们的 CONTRIBUTING 文档来参与其中。