The Swift (and Objective-C) testing framework.
Swift Objective-C Ruby Shell
Latest commit 4bfde84 Mar 16, 2017 @jeffh jeffh committed on GitHub Merge pull request #698 from wongzigii/swiftlint
[SwiftLint][trivial] Resolve trailing comma violation
Permalink
Failed to load latest commit information.
.github Replace ? with . Nov 22, 2016
Documentation Merge pull request #683 from pedrovereza/typo-shared-examples Jan 26, 2017
Externals Add SwiftPM support on macOS Feb 7, 2017
Quick Templates Update QuickConfiguration template Jan 6, 2017
Quick.xcodeproj add SwiftLint target to manage SwiftLint easily Feb 13, 2017
Quick.xcworkspace Move Nimble dependency to a workspace Nov 21, 2014
Sources [SwiftLint] Resolve trailing comma violation Mar 15, 2017
Tests Add SwiftPM support on macOS Feb 7, 2017
script Move danger to OSX platform Jan 4, 2017
.Package.test.swift Add SwiftPM support on macOS Feb 7, 2017
.gitignore Ignore swiftpm's Packages direcrory Jan 16, 2016
.gitmodules Fix Xcode 8 GM compatibility Sep 7, 2016
.hound.yml Add .hound.yml for swiftlint Nov 16, 2016
.swift-version Update .swift-version Jan 10, 2017
.swiftlint.yml [SwiftLint] Enable force_unwrapping rule Jan 9, 2017
.travis.yml Add SwiftPM support on macOS Feb 7, 2017
CODE_OF_CONDUCT.md Add quickorg@icloud.com to CoC Aug 19, 2016
CONTRIBUTING.md Add link to CODE_OF_CONDUCT.md Aug 19, 2016
Dangerfile Rename `didModify` to ruby style `did_modify` Jan 9, 2017
Gemfile Move danger to OSX platform Jan 4, 2017
Gemfile.lock Update Gemfile.lock Jan 9, 2017
LICENSE LICENSE: Migrate from MIT to Apache 2.0 license Nov 1, 2014
Package.swift Add SwiftPM support on macOS Feb 7, 2017
Quick.podspec Bumping version to 1.1.0 Feb 9, 2017
README.md Add badges to README Jan 31, 2017
Rakefile [SwiftPM] Remove test dependencies from `Package.swift` Nov 6, 2016

README.md

Build Status CocoaPods Carthage Compatible Platforms

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)
          expect{you.submittedAnIssue}.toEventually(beTruthy())
        }
      }
    }
  }
}

Nimble

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 3 v1.0.0 or later v5.0.0 or later
Swift 2.2 / Swift 2.3 v0.9.3 v4.1.0

Documentation

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

use_frameworks!

target "MyApp" do
  # Normal libraries

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

    pod 'Quick'
    pod 'Nimble'
  end
end

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.

License

Apache 2.0 license. See the LICENSE file for details.