Nimble
使用Nimble来表达Swift或Objective-C表达式的预期结果。灵感来自Cedar。
// Swift
expect(1 + 1).to(equal(2))
expect(1.2).to(beCloseTo(1.1, within: 0.1))
expect(3) > 2
expect("seahorse").to(contain("sea"))
expect(["Atlantic", "Pacific"]).toNot(contain("Mississippi"))
expect(ocean.isClean).toEventually(beTruthy())
文档
Nimble的文档现在位于Sources/Nimble/Nimble.docc作为文档目录。你可以在quick.github.io/Nimble轻松浏览它。
安装Nimble
Nimble可以单独使用,也可以与其姊妹项目Quick一起使用。要同时安装Quick和Nimble,请遵循Quick文档中的安装说明。
目前,Nimble可以通过四种方式安装:Swift包管理器、CocoaPods、Carthage或git子模块。
Swift包管理器
Xcode
通过Xcode的Swift包管理器集成安装Nimble:
选择你的项目配置,然后是项目标签,再选择包依赖标签。点击列表底部的"加号"按钮,然后按照向导将Quick添加到你的项目中。指定https://github.com/Quick/Nimble.git
作为URL,并确保将Nimble添加为你的单元测试目标的依赖项,而不是应用目标。
Package.Swift
要使用Swift包管理器和Nimble来测试你的应用,将Nimble添加到你的Package.Swift
中,并将其与你的测试目标链接:
// swift-tools-version:5.7
import PackageDescription
let package = Package(
name: "MyAwesomeLibrary",
products: [
// ...
],
dependencies: [
// ...
.package(url: "https://github.com/Quick/Nimble.git", from: "13.0.0"),
],
targets: [
// 目标是包的基本构建块。目标可以定义一个模块或测试套件。
// 目标可以依赖于此包中的其他目标,以及此包所依赖的包中的产品。
.target(
name: "MyAwesomeLibrary",
dependencies: ...),
.testTarget(
name: "MyAwesomeLibraryTests",
dependencies: ["MyAwesomeLibrary", "Nimble"]),
]
)
请注意,如果你使用Swift包管理器安装Nimble,那么raiseException
将不可用。
CocoaPods
要在CocoaPods中使用Nimble来测试你的macOS、iOS、tvOS或watchOS应用,将Nimble添加到你的podfile中,并添加use_frameworks!
行以启用CocoaPods的Swift支持。
platform :ios, '13.0'
source 'https://github.com/CocoaPods/Specs.git'
# 在这里添加你的应用所需的任何pod
target 'YOUR_APP_NAME_HERE_Tests', :exclusive => true do
use_frameworks!
pod 'Nimble'
end
最后运行pod install
。
Carthage
要在Carthage中使用Nimble来测试你的macOS、iOS、tvOS或watchOS应用,将Nimble添加到你的Cartfile.private
中:
github "Quick/Nimble" ~> 13.2
然后按照Carthage快速入门的其余步骤操作,并将Nimble与你的单元测试链接。
Git子模块
要使用Nimble作为子模块来测试你的macOS、iOS或tvOS应用,请遵循以下4个简单步骤:
- 克隆Nimble仓库
- 将Nimble.xcodeproj添加到你项目的Xcode工作空间
- 将Nimble.framework链接到你的测试目标
- 开始编写预期!
有关这些步骤的更详细说明,请阅读如何安装Quick。忽略涉及将Quick添加到你项目的步骤,以仅安装Nimble。
隐私声明
Nimble是一个仅用于测试的库,不应该包含在提交给App Store Connect的二进制文件中。
尽管不会被发送给Apple,Nimble不会也永远不会收集任何形式的分析或跟踪数据。