CheckOps
Nimble
Nimble is an Apache-2.0 matcher framework for Swift and Objective-C, offering expressive expect(...).to(...) assertions and asynchronous toEventually expectations, used with XCTest or Quick.
Latest public signals
Not refreshed yet. Refresh reads the public site and, when the entry has a GitHub repository, the latest release.
Introduction
Nimble is a matcher framework for Swift and Objective-C, inspired by Cedar. It lets you express expectations in a readable style, such as expect(seagull.squawk).to(equal("Squee!")) or expect(ocean.isClean).toEventually(beTruthy()), and produces clear failure messages. It is maintained by the Quick organisation and is commonly paired with the Quick BDD framework, but works perfectly well with plain XCTest.
Nimble includes matchers for equality, identity, comparisons, collections (contain, beEmpty, haveCount), strings, types, errors (throwError), nil, and Swift assertions, and supports custom matchers. Asynchronous expectations (toEventually, toNever, toAlways) poll until a condition is satisfied, which is useful for UI and networking code, and async/await variants integrate with Swift concurrency. require provides expectations that stop the test on failure. Version 14.0.0 was released on 28 November 2025, with commits in May 2026.
The source code is at Quick/Nimble on GitHub under the Apache-2.0 licence, with about 4,800 stars; the most recent commit was on 4 May 2026.
Features
- Readable matchers:
expect(...).to(...)style. - Async expectations:
toEventually,toNeverandtoAlways. - Custom matchers: Define domain-specific matchers.
- Works with XCTest and Quick: No special runner required.
Pros
- Free to use: Open source under the Apache-2.0 licence, so the core tool costs nothing to use.
- Actively maintained: The repository had commits as recent as 4 May 2026.
- Community: About 4,800 GitHub stars.
Cons
- Overlap with Swift Testing:
#expectcovers many needs natively. - Release cadence: Releases are less frequent; check compatibility with new Xcode versions.
Usage and Links (Example)
import XCTest
import Nimble
@testable import Shop
final class CartTests: XCTestCase {
func testTotals() {
let cart = Cart(items: [Item(price: 5), Item(price: 7)])
expect(cart.total).to(equal(12))
expect(cart.items).to(haveCount(2))
}
func testSyncFinishes() {
let sync = Syncer()
sync.start()
expect(sync.isDone).toEventually(beTrue(), timeout: .seconds(2))
}
}
Resources:
Pricing
Nimble is free and open source under the Apache-2.0 licence.
Recommended for?
- XCTest users wanting more expressive assertions.
- Teams using Quick for BDD-style specs.
Conclusion
Nimble adds expressive, asynchronous-friendly matchers to Swift and Objective-C tests, a long-standing favourite in the iOS community.
Alternatives
Other tools on CheckOps that cover similar ground. Open a page, or compare one with Nimble side by side.
XXCTestXCTest is Apple's testing framework for unit, performance and UI tests in Xcode projects across Apple platforms, with assertions, expectations for async code, performance metrics and code coverage.Compare with Nimble
SSwift TestingSwift Testing is Apple's open-source (Apache-2.0) testing library for Swift, using @Test and #expect macros, parameterised tests, traits and parallel execution, included in Xcode 16 and Swift 6 toolchains.Compare with Nimble
SSnapshotTesting (Point-Free)SnapshotTesting is Point-Free's MIT-licensed snapshot testing library for Swift, snapshotting views, view controllers and any value as images, text, JSON and more, with XCTest and Swift Testing support.Compare with Nimble
VViewInspectorViewInspector is an MIT-licensed library for unit testing SwiftUI views at runtime, letting tests traverse the view hierarchy, read values and trigger actions such as button taps.Compare with Nimble
AAssertJAssertJ is an Apache-2.0 fluent assertions library for Java, with rich, discoverable assertions for core types, collections, exceptions, dates and more, plus soft assertions and custom assertion generation.Compare with Nimble
CChaiChai is an MIT-licensed BDD/TDD assertion library for Node.js and browsers, offering expect, should and assert styles and a large plugin ecosystem, pairing with any test framework.Compare with Nimble