Swiftpack.co - Package - Quick/Quick

Build Status CocoaPods Carthage Compatible Accio supported Platforms Reviewed by Hound

Quick is a behavior-driven development framework for Swift and Objective-C. Inspired by RSpec, Specta, and Ginkgo.

// Swift

import Quick
import Nimble

class TableOfContentsSpec: QuickSpec {
  override func spec() {
    describe("the 'Documentation' directory") {
      it("has everything you need to get started") {
        let sections = Directory("Documentation").sections
        expect(sections).to(contain("Organized Tests with Quick Examples and Example Groups"))
        expect(sections).to(contain("Installing Quick"))

      context("if it doesn't have what you're looking for") {
        it("needs to be updated") {
          let you = You(awesome: true)


Quick comes together with Nimble — a matcher framework for your tests. You can learn why XCTAssert() statements make your expectations unclear and how to fix that using Nimble assertions here.

Swift Version

Certain versions of Quick and Nimble only support certain versions of Swift. Depending on which version of Swift your project uses, you should use specific versions of Quick and Nimble. Use the table below to determine which versions of Quick and Nimble are compatible with your project.

|Swift version |Quick version |Nimble version | |:--------------------|:---------------|:--------------| |Swift 4.2 |v1.3.2 or later |v7.3.2 or later| |Swift 3 / Swift 4 |v1.0.0 or later |v5.0.0 or later| |Swift 2.2 / Swift 2.3|v0.9.3 |v4.1.0 |


All documentation can be found in the Documentation folder, including detailed installation instructions for CocoaPods, Carthage, Git submodules, and more. For example, you can install Quick and Nimble using CocoaPods by adding the following to your Podfile:

# Podfile


target "MyApp" do
  # Normal libraries

  abstract_target 'Tests' do
    inherit! :search_paths
    target "MyAppTests"
    target "MyAppUITests"

    pod 'Quick'
    pod 'Nimble'

Projects using Quick

Over ten-thousand apps use either Quick and Nimble however, as they are not included in the app binary, neither appear in “Top Used Libraries” blog posts. Therefore, it would be greatly appreciated to remind contributors that their efforts are valued by compiling a list of organizations and projects that use them.

Does your organization or project use Quick and Nimble? If yes, please add your project to the list.

Who uses Quick

Similar to projects using Quick, it would be nice to hear why people use Quick and Nimble. Are there features you love? Are there features that are just okay? Are there some features we have that no one uses?

Have something positive to say about Quick (or Nimble)? If yes, provide a testimonial here.


Apache 2.0 license. See the LICENSE file for details.


Stars: 8472
Help us keep the lights on



v2.2.0 - Sep 14, 2019

New Features

  • Make name variable of Behavior open #906 (Thanks @VojtaStavik)
  • [podspec] Use swift_versions DSL if available #911, #919 (Thanks @ethansinjin)


  • Remove unnecessary !SWIFT_PACKAGE compile condition #866
  • [refactoring] Re-implement qck_enumerateSubclasses in Swift #867
  • [refactoring][QuickSpec.swift] Use World.performWithCurrentExampleGroup #868
  • ⚠️ Re-enable danger 🙀 #869
  • [refactoring] Remove _QuickSelectorWrapper and use String instead #870
  • [refactoring] Reduce uses of AnyClass, replace them with QuickSpec.Type where possible #871
  • Refactor configuring QuickConfiguration subclasses #876
  • [refactoring] Convert some global variables into World's states #877
  • [refactoring] Remove unnecessary !SWIFT_PACKAGE conditions #878
  • Run additional test suites in a separate World instance (only with Xcode for now) #879
  • Merge SpecRunner implementation into single file #881
  • Run additional test suites in a separate World instance for SwiftPM on Darwin #882
  • Implement qck_suspendObservation on Linux #883
  • Run additional test suites in a separate World instance for SwiftPM on Linux #884
  • Re-implement SpecRunner on Linux using XCTestSuite #885
  • [CI] Test Swift 5.1 snapshots #892
  • [SwiftLint] Address reduce_boolean warnings #897
  • Update Nimble #898, #918
  • [CI] Use GitHub Actions for macOS jobs #915, #921


  • Fix a runtime crash when a subclass of QuickSpec is subclassed and the subclass has a Swift struct property #873, #901, #916, #917 (Thanks @ikesyo and @VojtaStavik)

Documentation Changes

  • Document support & installation via Accio #851 (Thanks @Dschee)
  • Add documentation for Behavior<Context> #905 (Thanks @VojtaStavik)
  • fix typo in SharedExamples.md #913 (Thanks @akarsh)

v2.1.0 - Apr 18, 2019

New Features

  • Support QuickSpec.current for SwiftPM builds as well, on both macOS and Linux #848, #850
  • Package.swift is updated for Swift 5, which adds the platforms setting (SE-0236) #843 (Thanks @devxoul)


  • Update CocoaPods to 1.7.0.beta.3 #840, #852
  • Update .hound.yml #844
  • Update Nimble to 8.0.1 #846
  • Xcode 10.2: Update to recommended settings #847
  • Introduce FileString typealias which has been used in Nimble #854
  • Internal refactoring #855, #858, #859, #860, #861, #862, #863, #864, #865
  • [CI] Propagate xcodebuild errors correctly #857

v2.0.0 - Mar 3, 2019

Quick v2 has been released! 🎉 The new major version requires Swift 4.2 / Xcode 10.1 at least, which also supports Swift 5.0 / Xcode 10.2 as well.


  • Bump requirements #786 #789 (Thanks @ikesyo)
    • Bump Swift version to 4.1
  • Behavior.name is changed from open to public #821 (Thanks @spekke)
  • Bump Swift requirement to 4.2 #831 (Thanks @ikesyo)


  • Add left alignment spaces for copyright in template files #790 (Thanks @quesera2)
  • [Xcode] Enable New Build System #793 (Thanks @ikesyo)
  • Update Nimble #798 #808 #814 #815 #837 (Thanks @ikesyo)
  • [Danger] Remove CONTRIBUTING.md from SDM_DANGER_IMMUTABLE_FILES #805 (Thanks @ikesyo)
  • [CI] Add Swift 4.2/Xcode 10 to the build matrix #824 (Thanks @ikesyo)
  • Issue-689: Improve QuickBot lint warning #827 (Thanks @atfelix)
  • Use #if canImport implemented in Swift 4.1 (SE-0075) #832 (Thanks @ikesyo)
  • [CI] Add Xcode 10.2 image to the build matrix #838 (Thanks @ikesyo)
  • Update CocoaPods to 1.7.0.beta.1 #839 (Thanks @ikesyo)


  • Fix NSInternalInconsistencyException when running a test from test navigator #716 (Thanks @haitaoli)
  • Xcode 10: Adjust Build Phases order #817 (Thanks @ikesyo)

Documentation Changes

  • Add @escaping to Swift example #787 (Thanks @bellebethcooper)
  • Add a "Reviewed by Hound" badge #810 (Thanks @salbertson)
  • Fix typo #812 (Thanks @revolter)
  • Simple typo correction in a KR doc #816 (Thanks @Willicious-k)
  • Update InstallingQuick.md #830 (Thanks @audrl1010)

v1.3.4 - Jan 29, 2019


  • [SwiftPM] Update swiftLanguageVersions to 4 for Package@swift-4.swift #834 (Thanks @ikesyo)

v1.3.3 - Jan 28, 2019


  • Fix Xcode 10 warning #821, #833 (Thanks @spekke and @ikesyo)