Swift Testing 是苹果用于编写测试的 Swift 框架,它引入了几个宏,包括#expect 宏。以前我们必须使用各种 XCAssert 变体,现在我们可以依赖一个强大的替代品,它将帮助我们更快地调试测试。
#expect 宏
#expect宏允许你在测试中编写你代码逻辑预期的结果。它取代了老式的 XCTest 断言,如 XCAssertEqual 和 XCAssertTrue 。
示例如下:
#expect(flag == true)
Swift Testing 提供了一个你需要用于所有断言的单一期望方法。还有一个可选的#require 宏,但是这个宏很早就无法通过你的测试。你可以将#require宏与将continueAfterFailure设置为false的XCTest函数进行比较。总之,XCTest断言映射到 Swift Testing 断言如下:
你可能正在计划将现有项目迁移到使用 Swift testing。虽然迁移是可行的,但是重写期望和使用 #expect 宏可能需要大量的手工工作。
幸运的是,我们可以从 Xcode 的一个特性中受益,它允许你做模式替换:
你基本上是在搜索以 XCTAssertEqual 开头,后面跟着任何字符,最后以逗号结尾的任何匹配。你可以通过单击搜索范围图标插入图案:
总结
Swift Testing 是苹果用于编写测试的 Swift 框架,可以替代 XCTest 框架。它引入了 #expect 宏,取代了XCTAssertEqual和XCTAssertTrue等老式断言。你可以更快地调试失败的测试,并使用搜索模式更容易地迁移现有测试。