The Swift (and Objective-C) testing framework.

Overview

Build Status CocoaPods Carthage Compatible Accio supported 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 5.2 v3.0.0 or later v9.0.0 or later
Swift 4.2 / Swift 5 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

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.

Comments
  • Tests not executing in Xcode 7 beta 6

    Tests not executing in Xcode 7 beta 6

    We are seeing a very reproducible problem (not 100%, I would estimate around 50-70%) where Xcode 7 beta 6 fails to detect and execute tests. Instead, it seems that the test spec is detected, but none of the tests defined within the spec (e.g., with context and it, etc.) are actually run.

    The result is that the test "runs," and is "successful," but it never actually executes any tests... so we are getting a false positive. Here's a screenshot that demonstrates the problem:

    testdevicevalidation_swift

    It seems to temporarily reset if we clean the build directory and clean derived data... but, the problem usually returns as soon as we execute the tests more than once, or if we change the test (and require a recompile). Based on these observations, I'll say the problem crops up every time we compile a test... and only stays away if we get it working, and don't touch the compiled tests. Just guessing at this point, but that seems to be the behavior.

    bug help wanted priority 
    opened by buildreactive 42
  • UIKonf T-Shirts

    UIKonf T-Shirts

    If you're attending UIKonf, I have some t-shirts for you! If you'd like one, please post a comment with your t-shirt size below!

    • Small: 1
    • Medium: 3
    • Large: 2
    • Extra Large: 2
    opened by modocache 39
  • Xcode says it has run the tests but not even one

    Xcode says it has run the tests but not even one

    Hi,

    Its strange that when I open Xcode fresh and run a test file whole unit tests in project will run with the file tests also. And if I focus or without focussing run a file again Xcode says it has run the test and passes, even though last run had failed test and it is still failing Xcode says it has passed, but it doesn't reach any break point in the tests written. I am using Xcode 7.3.1. I am using package managers but not with respect to any testing.

    I really like Quick and nimble which helps me to write BDD tests but now I am in a situation that I am not able to fix the previous failing tests due to the respective main code change.

    Can any one help me on these

    bug enhancement help wanted priority 
    opened by shravankumarbj 36
  • No such module 'Quick'

    No such module 'Quick'

    I'm using Xcode 7.0.1

    my pod contains

    target :TestQuickTests do link_with 'TestQuickTests' pod 'Quick', '~> 0.6.0' pod 'Nimble', '2.0.0-rc.3' end

    any ideas how to eliminate this error?

    bug help wanted question 
    opened by sger 30
  • Quick not usable in XCode 7.1

    Quick not usable in XCode 7.1

    `Include of non-modular header inside framework module 'Quick.Quick

    import <Quick/QuickSpec.h>

    Error: could not build Objective-C module 'Quick'`

    I receive the afforementioned error when trying to build using XCode 7.1 beta 3.

    According to this post : it is related to the position of some includes.

    I tried turning on the * Allow Non-modular includes in Frame Modules* flag, to no avail. I cannot build in XCode version 7.1 (7B91b).

    Searching further.

    opened by daneov 27
  • [WIP] Reporting

    [WIP] Reporting

    This represents some progress towards #9. I've actually experimented a little bit and taken things a step further but think my findings warrant some discussion first. There's also some good discussion/ideas in kiwi-bdd/Kiwi#449 which I intend on introducing here in the near future.

    I've spent a great deal of time investigating how XCTest currently works and does test reporting thanks to modocache/XCTest-Headers.

    Initially I tried removing XCTest's own test observers using various approaches but I couldn't prevent the output from being logged. When I could, it broke the integration with Xcode. Hence, I've essentially re-implemented the appropriate methods to only integrate with Xcode. This leaves room for our own output in whatever format is desired.

    When I say "re-implemented", I originally did this via categories but now via method swizzling. This should provide support for us to not do anything should the default reporter be desired.

    This concludes the current progress. Discussion on how to proceed below.


    I explored writing my own test observation center which hooks into XCTestObservationCenter. Like the original, observers can hook into the observation center in order to be notified of progress and print their output to the command line. So far I have the following reporters:

    • one with output practically identical to the default we all know and love :trollface:
    • one that prints dots for passing examples, F for failures
    • a broken BDD reporter (see below)

    These are fairly easy to implement by creating a Swift class that inherits from NSObject and conforms to a TestObserver protocol that I defined. So far I've been using fputs("...\n", __stderrp) to log output, but a particular implementation could do something entirely different.

    This all works really well and could even be a separate project from Quick/Quick since it doesn't depend on anything other than XCTest. However, there are some caveats:

    • suite and test names are provided by XCTest and therefore require a lot of massaging in order to parse out what we consider to be the string passed to describe, context, it. I've done a lot of the work to extract the correct strings but punctuation and other special characters are lost forever. It may be possible to store these strings somewhere and access them at the right time, either via method call or dictionary lookup.
    • getting the nesting right when printing is proving really difficult. It seems doable but there's a lot of bookkeeping involved.

    I think it might be worth exploring this a little bit more, but we may prefer to hook into Quick and have it report directly in the BDD language we expect.

    github-review-rejected 
    opened by paulyoung 27
  • [Nimble] Use of C primitive types in expectations

    [Nimble] Use of C primitive types in expectations

    it("primitive types") {
        var a: CInt = 1
        expect(a).to.equal(1)
    }
    

    The expect line gives the error "could not find member 'to'", probably because C primitive types are not objects in the Swift conventional sense.

    You can wrap this in

    expect(Int(a)).to.equal(1)
    

    to get around it. Might be nice if the expect() call can be overloaded to do this for you.

    enhancement help wanted 
    opened by dmeehan1968 27
  • `swift test` doesn't actually run tests on macOS

    `swift test` doesn't actually run tests on macOS

    • [x] I have read CONTRIBUTING and have done my best to follow them.

    What did you do?

    1. Created a simple Spec:
    import Quick
    import Nimble
    
    class ThingsSpec: QuickSpec {
      override func spec() {
        describe("test") {
          it("does the thing") {
            expect(true).to(beTrue())
          }
        }
      }
    }
    
    1. Ran swift test

    What did you expect to happen?

    I expected it to properly run the test spec, and output the results.

    What actually happened instead?

    Instead, I got the following output:

    Test Suite 'All tests' started at 2017-01-14 00:03:05.037
    Test Suite '[REDACTED]PackageTests.xctest' started at 2017-01-14 00:03:05.038
    Test Suite '[REDACTED]PackageTests.xctest' passed at 2017-01-14 00:03:05.038.
             Executed 0 tests, with 0 failures (0 unexpected) in 0.000 (0.000) seconds
    Test Suite 'All tests' passed at 2017-01-14 00:03:05.038.
             Executed 0 tests, with 0 failures (0 unexpected) in 0.000 (0.001) seconds
    

    Environment

    List the software versions you're using:

    • Quick: 1.0.0
    • Nimble: 5.1.1
    • Xcode Version: Irrelevant
    • Swift Version: Apple Swift version 3.0.2 (swiftlang-800.0.63 clang-800.0.42.1)
    • Swift Package Manager 3.0.2 (swiftpm-11750)

    Project that demonstrates the issue

    I can't link directly to the project in question, as it is closed source, but I had the same problem when attempting to verify the issue with ReactiveCocoa/ReactiveSwift.

    opened by thislooksfun 26
  • Support focused tests

    Support focused tests

    Prefixing f or x should focus or exclude a test/group:

    fit()
    fdescribe()
    fcontext()
    
    xit()
    xdescribe()
    xcontext()
    

    It's shorter to change than pending and simple sed/grep scripts can be built on top to strip pending or focused tests in a project.

    enhancement 
    opened by jeffh 26
  • Report skipped tests to Xcode

    Report skipped tests to Xcode

    The PR should summarize what was changed and why. Here are some questions to help you if you're not sure:

    • What behavior was changed?

      When running on macOS, skipped tests will be reported in the Xcode test navigator, like so:

      image

      The skipped line will not be marked in the source code editor. It appears that Xcode only does that for statically defined tests (those marked static test), not runtime tests (those marked run-time test), which is what Quick uses exclusively.

      Future direction: when some tests are "focused", should we mark all other tests as skipped?

    • What code was refactored / updated to support this change?

      The general error-handling path was extracted into a private reportFailedTest method.

    • What issues are related to this PR? Or why was this change introduced?

      Resolves #1093

    Checklist - While not every PR needs it, new features should consider this list:

    • [x] Does this have tests?
    • [ ] Does this have documentation? Idk, Should it?
    • [ ] Does this break the public API (Requires major version bump)? No.
    • [x] Is this a new feature (Requires minor version bump)?
    enhancement feature 
    opened by amomchilov 25
  • Xcode 9 beta 4

    Xcode 9 beta 4

    • [√] I have read CONTRIBUTING and have done my best to follow them.

    What did you do?

    Created a new project using Xcode 9 beta 4, pod installed Nimble and Quick

    What did you expect to happen?

    Expected default (empty) tests to run and pass

    What actually happened instead?

    Quick fails to compile, therefore tests fail to build

    Environment

    • Quick: 1.1.0 pod Quick
    • Nimble: 7.0.1 pod Nimble :git => 'https://github.com/Quick/Nimble.git', :branch => 'xcode9-beta'
    • Xcode Version: 9.0 beta 4 (9M189t)
    • Swift Version: 4.0 (swiftlang-900.0.54.11 clang-900.0.31)

    Please also mention which package manager you used and its version. Delete the other package managers in this list:

    • Cocoapods: 1.2.0 using Cocopods.app
    screen shot 2017-07-27 at 4 57 34 pm screen shot 2017-07-27 at 4 57 51 pm question 
    opened by ironforward 24
  • Quick tests are not executed when there are some `XCTestCase` tests in the target

    Quick tests are not executed when there are some `XCTestCase` tests in the target

    • [x] I have read CONTRIBUTING and have done my best to follow them.

    What did you do?

    I have some tests in my project written with Quick and some as XCTestCase. For some time they were working along each other just fine, but now whenever I run test target only XCTestCase ones are being executed. If I comment all XCTestCase tests, Quick tests are being executed as expected.

    What did you expect to happen?

    XCTestCase and Quick tests to be executed along each other.

    What actually happened instead?

    Only XCTestCase are being executed when both types are present.

    Environment

    List the software versions you're using:

    • Quick: 6.1.0 (though same thing happened on 5.1.0)
    • Nimble: 11.1.0 (though same thing happened on 10.0.0)
    • Xcode Version: 14.1 (14B47b)
    • Swift Version: Xcode Default

    Please also mention which package manager you used and its version. Delete the other package managers in this list:

    • Carthage: 0.38.0

    Project that demonstrates the issue

    https://github.com/tomekfab/quickandnormaltests (Quick and Nimble are added here with SPM but issue can still be observed)

    bug 
    opened by tomekfab 2
  • Upgrading a large codebase to Quick 6 is really problematic and `toEventually` is broken in Obj-C

    Upgrading a large codebase to Quick 6 is really problematic and `toEventually` is broken in Obj-C

    • [x] I have read CONTRIBUTING and have done my best to follow them.

    What did you do?

    Tried upgrading to Quick 6.

    What did you expect to happen?

    Quick 6 has an incremental way of adopting concurrency and toEventually isn't broken in Objective-C.

    What actually happened instead?

    Quick 6 added support for concurrency in a way that currently makes incremental adoption impossible.

    The codebase that has to be upgraded to Quick 6 has a huge number specs across hundreds of modules and in order to upgrade all the problems introduced by the breaking changes have to be fixed in all those modules at once. Also generally the repo has a large amount of open PRs which would also need to be checked if they contain broken code and be fixed at the same time too.

    Details:

    Now tests run off the main thread (and off the MainActor) by default

    • a lot of tests use Main actor-isolated properties from the iOS SDK, these tests now won't build
    • a lot of tests use main thread only APIs which crash when called off the main thread

    To temporarily fix these each spec could be marked as @MainActor but that wouldn't solve the cases where its or beforeEachs and its variants are used in a local function, since inside those the closures passed won't be @MainActor:

    @MainActor
    final class SomeSpec: QuickSpec {
        override func spec() {
            describe("...") {
                context("...") {
                    beforeEach { // this is @MainActor
                        ...
                    }
    
                    it { // this too
                        ...
                    }
    
                    func someFunc(...) {
                        beforeEach { // this isn't @MainActor
                            ...
                        }
    
                        it("...") { // this also isn't
                            ...
                        }
                    }
    
                    someFunc()
                }
            }
        }
    }
    

    Another possible temporary solution is to mark all the async closures in all the specs @MainActor but that would result in an immense amount of changes.

    Now the closures passed to it, beforeEach and the variants of the latter are all async and there isn't a non-async alternative

    • because of this (of course in addition to the above mentioned things) only the latest version of Nimble can be used which provides the async versions of waitUntil, toEventually and its variants and all the current usages can only be fixed all at once

    • those are also used extensively and it's likely that numerous open PRs would also include new usages

    toEventually is broken in Objective-C because it runs in an async context

    Adding this testcase to FunctionalTests_ItSpec_ObjC shows that toEventually is broken:

    it(@"works with toEventually", ^{
        __block id obj = @1;
        dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
            obj = nil;
        });
        expect(obj).toEventually(beNil());
    });
    

    Even though World has syncIt for Objective-C, the closures passed there are still executed in an async context, which brakes toEventually as described here: https://github.com/Quick/Nimble/pull/1007.

    What causes it to break is that the Objective-C blocks aren't async, so the non-async version of toEventually is used, which doesn't work in an async context, in which ultimately those blocks are executed, because of how the concurrency interoperability works between Objective-C and Swift.

    The Objective-C QuickSpec calls the synthesized runWithCompletionHandler on Example. runWithCompletionHandler's implementation creates a detached Task in which it runs Example.run and we end up in an async context. (https://github.com/apple/swift-evolution/blob/main/proposals/0297-concurrency-objc.md)

    I think to fix this a completely sync way of executing Examples still needs to exist besides the async, using which a better API that enables the incremental adoption of concurrency in Swift specs too could be implemented.

    Environment

    • Quick: 6.1.0
    • Nimble: 11.2.1
    • Xcode Version: 14.1 (14B47b)
    • Swift Version: 5.7
    • CocoaPods: 1.11.3
    opened by ViktorSimko 3
  • Bump fkirc/skip-duplicate-actions from 5.2.0 to 5.3.0

    Bump fkirc/skip-duplicate-actions from 5.2.0 to 5.3.0

    Bumps fkirc/skip-duplicate-actions from 5.2.0 to 5.3.0.

    Release notes

    Sourced from fkirc/skip-duplicate-actions's releases.

    v5.3.0

    Commits
    • 12aca0a Bump typescript from 4.8.4 to 4.9.3 (#294)
    • 48144db Bump @​types/node from 16.18.3 to 16.18.4 (#297)
    • 39b87d4 Bump eslint from 8.26.0 to 8.28.0 (#295)
    • 67e698f Bump @​typescript-eslint/eslint-plugin from 5.42.0 to 5.45.0 (#296)
    • fb5cfd8 Bump @​typescript-eslint/parser from 5.42.0 to 5.45.0 (#298)
    • b36b9c1 Bump prettier from 2.7.1 to 2.8.0 (#299)
    • bf741f0 Bump eslint-plugin-github from 4.4.0 to 4.4.1 (#300)
    • 2ab7af9 Bump @​typescript-eslint/parser from 5.41.0 to 5.42.0 (#291)
    • 01cdd04 Bump @​typescript-eslint/eslint-plugin from 5.41.0 to 5.42.0 (#289)
    • 116cb9e Retry API requests on server errors (#288)
    • See full diff in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies github_actions 
    opened by dependabot[bot] 0
  • `QuickConfiguration` could inherit `@MainActor` attribute from spec class.

    `QuickConfiguration` could inherit `@MainActor` attribute from spec class.

    • [x] I have read CONTRIBUTING and have done my best to follow them.

    What did you do?

    When you have a QuickSpec with the @MainActor and a QuickConfiguration with (for example) an afterEach, the closure of this afterEach won't use the main actor.

    The example below is using NSLog to show which process Id each closure is being run from. This is to easily tell from the console whether they’re both running on the same thread or not.

    @MainActor
    final class Actor_Spec: QuickSpec {
        override func spec() {
            describe("mainActor") {
                it("should be true") {
                    NSLog("Log from spec class")
                    expect(Thread.isMainThread) == true
                }
            }
        }
    }
    
    final class ThreadTestConfiguration: QuickConfiguration {
        override class func configure(_ configuration: QCKConfiguration) {
            configuration.afterEach {
                NSLog("Log from configuration class")
            }
        }
    }
    

    What did you expect to happen?

    The process ID from the spec and configuration classes should match.

    What actually happened instead?

    The process ID from the spec and configuration classes don't match. Adding configuration.afterEach { @MainActor in makes the process IDs match.

    Environment

    List the software versions you're using:

    • Quick: v6.0.0
    • Nimble: v11.1.0
    • Xcode Version: 14.1
    • Swift Version: 5.7.1

    Please also mention which package manager you used and its version. Delete the other package managers in this list:

    • Carthage: 0.38.0
    opened by matheusalano 3
  • How to get rid of MainActor warning on all

    How to get rid of MainActor warning on all "it" tests?

    What did you do?

    Using Quick v6, I had to add a lot of @MainActor to it("...") tests such as

    class TutorialManagerSpec: QuickSpec {
        override func spec() {
            describe("foo") {
                it("can do bar") { @MainActor in // <- Xcode Warning
                    // Some test
                }
            }
        }
    }
    

    That's because of the architecture of the project which is based on singletons which must run on the main thread at all costs.

    This generates an xcode warning for every test (so there are hundreds and hundreds of warnings).

    Converting function value of type '@ MainActor () -> ()' to '() throws -> Void' loses global actor 'MainActor'

    Is there a specific syntax to get rid of this warning?

    Environment

    List the software versions you're using:

    • Quick: 6.0.0
    • Nimble: 11.1.0
    • Xcode Version: 14.0.1
    • Swift Version: The one of 14.0.1
    • CocoaPods: 1.11.3
    opened by Kalzem 3
  • beforeSuite running on the main actor when not tagged to do so. WAS: XCTestExpectation not working anymore in v6 in beforeSuite

    beforeSuite running on the main actor when not tagged to do so. WAS: XCTestExpectation not working anymore in v6 in beforeSuite

    What did you do?

    I have a XCTestExpectation for an API fetch that I can't mock properly (third party SDK) so I call it in beforeSuite. Before v6, the following code worked. Now it keeps failing even though fulfill() is indeed called.

    final class PurchaseManagerSpec: QuickSpec {
        override func spec() {
            beforeSuite {
                let exp = self.expectation(description: "Fetching IAPs")
                PurchaseManager.shared.fetchAllProducts { status in
                    switch status {
                    case .success: break
                    case .error: print("some errors but I don't care")
                    }
                    exp.fulfill()
                }
                self.waitForExpectations(timeout: 20) // <- Always failing with the wrong message
            }
        ...
    }
    

    I also tried adding @MainActor to beforeSuite, it doesn't change anything.

    What did you expect to happen?

    v6 should work like v5 as I don't see mention of XCTestExpectation with breaking changes in the changelog.

    What actually happened instead?

    XCTestExpectation not working in beforeSuite anymore.

    Also I noticed that Xcode is lost and doesn't understand which test failed.

    The issue comes from PurchaseManagerSpec but the error I get from line self.waitForExpectations(timeout: 20) is

    An_AnalyticsManager__can_send_all_achievements_events:(): 
      Asynchronous wait failed: Exceeded timeout of 20 seconds, with unfulfilled expectations: "Fetching IAPs".
    

    which is another Spec class.

    Environment

    • Quick: 6.0.0
    • Nimble: 11.1.0
    • Xcode Version: 14.0.1
    • Swift Version: The one of Xcode 14.0.1
    • CocoaPods: 1.11.3
    bug 
    opened by Kalzem 3
Releases(v6.1.0)
  • v6.1.0(Nov 25, 2022)

    Highlighted Changes

    • New TestState property wrapper (Thanks @CraigSiemens!). You can now wrap properties with @TestState to have them automatically set to nil.
    • Objective-C API is no longer available in Swift, this should reduce confusion whether a test is being executed in an async context or not.
    • This release drops support for Swift 5.6/Xcode 13.3.1.

    Auto-generated Release Notes

    What's Changed

    • Bump danger from 9.0.0 to 9.1.0 by @dependabot in https://github.com/Quick/Quick/pull/1184
    • Make Objective-C API unavailable in Swift. by @younata in https://github.com/Quick/Quick/pull/1185
    • Update Nimble to 11.2.1, remove now-unnecessary usage of awaits in tests. Drop support for swift 5.6/Xcode 13.3.1 by @younata in https://github.com/Quick/Quick/pull/1187
    • Added a TestState property wrapper. by @CraigSiemens in https://github.com/Quick/Quick/pull/1186

    New Contributors

    • @CraigSiemens made their first contribution in https://github.com/Quick/Quick/pull/1186

    Full Changelog: https://github.com/Quick/Quick/compare/v6.0.1...v6.1.0

    Source code(tar.gz)
    Source code(zip)
  • v6.0.1(Nov 11, 2022)

    What's Changed

    • Force async in fit, xit, pending and justBeforeEach by @younata in https://github.com/Quick/Quick/pull/1183

    Full Changelog: https://github.com/Quick/Quick/compare/v6.0.0...v6.0.1

    Source code(tar.gz)
    Source code(zip)
  • v6.0.0(Nov 1, 2022)

    This closes the v6.0.0 milestone.

    Highlights

    See additional details under the auto-generated release notes below.

    Fixed

    • No more sporadic crashes attempting to detect subclasses https://github.com/Quick/Quick/pull/1156
    • Rerunning an individual test https://github.com/Quick/Quick/pull/1166
    • Skipped tests are reported to Xcode https://github.com/Quick/Quick/pull/1098

    New

    • Async/await support. All tests now run in an async context. https://github.com/Quick/Quick/pull/1160
    • You can now throw a StopTest error to end a test prematurely without it being reported as an error. https://github.com/Quick/Quick/pull/1165
    • Added the justBeforeEach operator, which takes a closure and runs it immediately prior to the relevant it tests. https://github.com/Quick/Quick/pull/1169 For example
    var ordering: [Int] = []
    beforeEach {
        ordering.append(1)
    }
    
    justBeforeEach {
        ordering.append(3)
    }
    
    beforeEach {
        ordering.append(2)
    }
    
    it("runs justBeforeEach after the other beforeEach's") {
        expect(ordering).to(equal([1, 2, 3]))
    }
    

    Breaking

    • This version raises minimum required version to Swift 5.6, and required OS to macOS 10.15, iOS 13, and tvOS 13.
    • aroundEach is removed from the Objective-C API https://github.com/Quick/Quick/pull/1160
    • Again, with the async support, all tests now run in an async context. This will require you to make changes, especially if you use Nimble.

    Auto-Generated Release Notes

    What's Changed

    • Create funding.yml by @jessesquires in https://github.com/Quick/Quick/pull/1147
    • Report skipped tests to Xcode by @amomchilov in https://github.com/Quick/Quick/pull/1098
    • Bump danger from 8.6.0 to 8.6.1 by @dependabot in https://github.com/Quick/Quick/pull/1148
    • Renamed Configuration -> QCKConfiguration on documentation by @takehilo in https://github.com/Quick/Quick/pull/1152
    • Fix sporadic crashes caused by finding classes that don't play well with isSubclass(of:) by @younata in https://github.com/Quick/Quick/pull/1156
    • Raise minimum supported versions to macOS 10.15, iOS 13, tvOS 13 by @younata in https://github.com/Quick/Quick/pull/1146
    • version up Nimble in Package.swift by @kimxwan0319 in https://github.com/Quick/Quick/pull/1153
    • Update Nimble submodule checkout to refer to the Nimble v10.0.0 commit by @younata in https://github.com/Quick/Quick/pull/1157
    • Fix tests broken by Nimble 10 update by @younata in https://github.com/Quick/Quick/pull/1158
    • Add @younata to funding.yml by @younata in https://github.com/Quick/Quick/pull/1164
    • Bump danger from 8.6.1 to 9.0.0 by @dependabot in https://github.com/Quick/Quick/pull/1168
    • Allow throwing in a test without producing an unexpected error by @bnickel in https://github.com/Quick/Quick/pull/1165
    • Allow rerunning individual examples in Xcode by @bnickel in https://github.com/Quick/Quick/pull/1166
    • Bump fkirc/skip-duplicate-actions from 4.0.0 to 5.1.0 by @dependabot in https://github.com/Quick/Quick/pull/1171
    • Introduce an assignBefore operator by @esilverberg in https://github.com/Quick/Quick/pull/1169
    • Bump fkirc/skip-duplicate-actions from 5.1.0 to 5.2.0 by @dependabot in https://github.com/Quick/Quick/pull/1172
    • Add support for xcode 14 and swift 5.7 by @younata in https://github.com/Quick/Quick/pull/1174
    • Swift Async/Await Support by @younata in https://github.com/Quick/Quick/pull/1160
    • Update Nimble to V11 by @younata in https://github.com/Quick/Quick/pull/1175

    New Contributors

    • @amomchilov made their first contribution in https://github.com/Quick/Quick/pull/1098
    • @takehilo made their first contribution in https://github.com/Quick/Quick/pull/1152
    • @kimxwan0319 made their first contribution in https://github.com/Quick/Quick/pull/1153
    • @bnickel made their first contribution in https://github.com/Quick/Quick/pull/1165
    • @esilverberg made their first contribution in https://github.com/Quick/Quick/pull/1169

    Full Changelog: https://github.com/Quick/Quick/compare/v5.0.1...v6.0.0

    Source code(tar.gz)
    Source code(zip)
  • v5.0.1(Apr 19, 2022)

    This release closes the v5.0.1 milestone.

    What's Changed

    • Bump danger from 8.5.0 to 8.6.0 by @dependabot in https://github.com/Quick/Quick/pull/1141
    • Bump fkirc/skip-duplicate-actions from 3.4.1 to 4.0.0 by @dependabot in https://github.com/Quick/Quick/pull/1140
    • Fix running tests in parallel by @younata in https://github.com/Quick/Quick/pull/1143
    • [5.0.1] version bump, gen docs by @jessesquires in https://github.com/Quick/Quick/pull/1144

    Full Changelog: https://github.com/Quick/Quick/compare/v5.0.0...v5.0.1

    Source code(tar.gz)
    Source code(zip)
  • v5.0.0(Apr 15, 2022)

    This release closes the v5.0.0 milestone.

    Highlights

    See additional details under the auto-generated release notes below.

    Fixed

    • Tests not discoverable or cannot fail in Xcode 13.3 #1123, #1129

    New

    • Add support for running a single test #1116
    • Add aroundEach #1132
    • New API docs via Jazzy available here: http://quick.github.io/Quick/

    Breaking

    • Rename Configuration -> QCKConfiguration #1133
    • Make FilterFlags implementation detail #1068

    Auto-generated release notes

    What's Changed

    • [BREAKING] Make FilterFlags implementation detail by @ikesyo in https://github.com/Quick/Quick/pull/1068
    • [BREAKING] Bump Swift requirement to 5.3 (Xcode 12) by @ikesyo in https://github.com/Quick/Quick/pull/1069
    • Re-add missing QUICK_EXPORT to Objective-C DSL by @ikesyo in https://github.com/Quick/Quick/pull/1070
    • Added documentation for how to do data driven tests using Quick by @pobengtsson in https://github.com/Quick/Quick/pull/940
    • Fix typos and code issues in the data driven examples documentation by @revolter in https://github.com/Quick/Quick/pull/1072
    • [CI] Test Swift 5.5 Development by @ikesyo in https://github.com/Quick/Quick/pull/1081
    • [README] Remove deprecated Accio references by @ikesyo in https://github.com/Quick/Quick/pull/1082
    • [CI] macOS 11 and Xcode 12.5 by @ikesyo in https://github.com/Quick/Quick/pull/1083
    • Bump danger from 8.2.3 to 8.3.1 by @dependabot in https://github.com/Quick/Quick/pull/1087
    • Bump cocoapods from 1.10.1 to 1.10.2 by @dependabot in https://github.com/Quick/Quick/pull/1089
    • Bump fkirc/skip-duplicate-actions from 3.4.0 to 3.4.1 by @dependabot in https://github.com/Quick/Quick/pull/1092
    • Specify header_dir in the podspec by @tsapeta in https://github.com/Quick/Quick/pull/1091
    • [CI] Test Xcode 13 by @ikesyo in https://github.com/Quick/Quick/pull/1095
    • Less String by @RomanPodymov in https://github.com/Quick/Quick/pull/1090
    • Excluding Info.plist files from Swift Package by @heyzooi in https://github.com/Quick/Quick/pull/1088
    • Bump cocoapods from 1.10.2 to 1.11.0 by @dependabot in https://github.com/Quick/Quick/pull/1099
    • docs(DSL): fix typo by @bricker in https://github.com/Quick/Quick/pull/1100
    • Bump cocoapods from 1.11.0 to 1.11.1 by @dependabot in https://github.com/Quick/Quick/pull/1101
    • Fix individual tests run in Xcode 12.5 by @khramtsoff in https://github.com/Quick/Quick/pull/1097
    • Use #if canImport(Darwin) for checking XCTIssue availability by @ikesyo in https://github.com/Quick/Quick/pull/1104
    • Bump cocoapods from 1.11.1 to 1.11.2 by @dependabot in https://github.com/Quick/Quick/pull/1105
    • Bump danger from 8.3.1 to 8.4.0 by @dependabot in https://github.com/Quick/Quick/pull/1107
    • Bump danger from 8.4.0 to 8.4.1 by @dependabot in https://github.com/Quick/Quick/pull/1110
    • Bump danger from 8.4.1 to 8.4.2 by @dependabot in https://github.com/Quick/Quick/pull/1112
    • Bump danger from 8.4.2 to 8.4.3 by @dependabot in https://github.com/Quick/Quick/pull/1117
    • Bump actions/checkout from 2 to 3 by @dependabot in https://github.com/Quick/Quick/pull/1120
    • Bump danger from 8.4.3 to 8.4.5 by @dependabot in https://github.com/Quick/Quick/pull/1121
    • Bump cocoapods from 1.11.2 to 1.11.3 by @dependabot in https://github.com/Quick/Quick/pull/1126
    • Bump danger from 8.4.5 to 8.5.0 by @dependabot in https://github.com/Quick/Quick/pull/1125
    • Critical! Fix test cases discoverage in Xcode 13.3 by @BobCatC in https://github.com/Quick/Quick/pull/1129
    • Bump cocoapods-downloader from 1.5.1 to 1.6.3 by @dependabot in https://github.com/Quick/Quick/pull/1130
    • Keep reference to AutoreleasingUnsafeMutablePointer by @ikesyo in https://github.com/Quick/Quick/pull/1103
    • Use Objective-C runtime's isSubclass(of:) API for checking superclass by @ikesyo in https://github.com/Quick/Quick/pull/1096
    • Fix Swift docs for non-named configure argument. by @alexhayes in https://github.com/Quick/Quick/pull/1113
    • Fix afterSuite blocks not running when having excluded tests by @revolter in https://github.com/Quick/Quick/pull/1061
    • [Breaking] Rename Configuration -> QCKConfiguration by @jessesquires in https://github.com/Quick/Quick/pull/1133
    • Add aroundEach by @pcantrell in https://github.com/Quick/Quick/pull/1132
    • Add support for running a single test by @younata in https://github.com/Quick/Quick/pull/1116

    New Contributors

    • @tsapeta made their first contribution in https://github.com/Quick/Quick/pull/1091
    • @RomanPodymov made their first contribution in https://github.com/Quick/Quick/pull/1090
    • @heyzooi made their first contribution in https://github.com/Quick/Quick/pull/1088
    • @bricker made their first contribution in https://github.com/Quick/Quick/pull/1100
    • @khramtsoff made their first contribution in https://github.com/Quick/Quick/pull/1097
    • @BobCatC made their first contribution in https://github.com/Quick/Quick/pull/1129
    • @alexhayes made their first contribution in https://github.com/Quick/Quick/pull/1113
    • @younata made their first contribution in https://github.com/Quick/Quick/pull/1116

    Full Changelog: https://github.com/Quick/Quick/compare/v4.0.0...v5.0.0

    Source code(tar.gz)
    Source code(zip)
  • v4.0.0(May 8, 2021)

    Quick v4 has been released! 🎉 The new major version requires Swift 5.2 / Xcode 11.4 at least.

    BREAKING CHANGES

    • Bump minimum iOS version to 9.0 #1013
    • Rename master branch to main #1052

    Changes

    • [CI] Test Xcode 12 and Swift 5.3 #1010
    • Set ENABLE_TESTING_SEARCH_PATHS to YES #1011
    • Upgrade Project Format to Xcode 11.4-compatible #1012 (Thanks @mRs-)
    • [CI] Use rake directly instead of travis-script-macos #1019
    • Update Nimble to 9.1.0 #1020, #1062, #1066
    • Xcode 12.0: Update to recommended settings #1021
    • Address deprecation warnings in Xcode 12 #1040
    • Migrate Linux CI from Travis to GitHub Actions #1042
    • [CI] Use norionomura/swift Docker images for Linux CI #1043
    • [SwiftLint] Enable yoda_condition rule #1044
    • [CI] Use the official Swift Docker images #1049
    • [CI] Split ci.yml into dedicated workflows #1050
    • Tweak CI workflows regarding fkirc/skip-duplicate-actions and matrix testing #1051
    • Xcode 12.5: Update to recommended settings #1063
    • [CI] Update Xcode and Swift versions #1064

    Documentation Changes

    • vieiwDidAppear not be called automatically in iOS SDK 13.0 #942 (Thanks @nickm01)
    • [Translation] Update Chinese README.md #1053 (Thanks @EdgarDegas)

    Miscellaneous

    • Create dependabot.yml #1000
    • Bump cocoapods #1001, #1026, #1035
    • Bump danger #1002, #1009, #1022, #1024, #1036, #1054
    • Bump kramdown #1004, #1058
    • [Dangerfile] Avoid passing a bot account name to github.api.organization_member #1005
    • Bump norio-nomura/action-swiftlint from 3.1.0 to 3.2.1 #1031
    • Bump fkirc/skip-duplicate-actions from v3.3.0 to v3.4.0 #1055
    • Bump rexml from 3.2.4 to 3.2.5 #1065
    Source code(tar.gz)
    Source code(zip)
  • v3.1.2(Feb 9, 2021)

  • v3.1.1(Feb 8, 2021)

  • v3.1.0(Feb 5, 2021)

  • v3.0.1(Feb 5, 2021)

  • v3.0.0(Jun 8, 2020)

    Quick v3 has been released! 🎉 The new major version requires Swift 5.2 / Xcode 11.4 at least.

    BREAKING CHANGES

    • Bump Swift requirement to 5.2 (Xcode 11.4 or later) #986

    New Features

    • it/fit/xit closures are now marked as throws, so you can throw Errors and the test fails if they do throw #680 (Thanks @marcelofabri)
      • it("should fail") {
            try throwingFunc()
        }
        

    Changes

    • Parallelize CI builds more (Take 2) #987
    • Update Nimble to 9.0.0-rc.1 #988

    Bugfixes

    • Delegate recordFailure to QuickSpec.current #990
    Source code(tar.gz)
    Source code(zip)
  • v2.2.1(Jun 1, 2020)

    Changes

    • [refactoring] Build examples only for classes without root example group #922 (Thanks @VojtaStavik)
    • [CI] Test device builds #924
    • [CI] Fix GitHub Actions breakage and restore Travis build matrix for older Xcode versions #937
    • [CI] Run tests with newer Xcode and Swift versions #947
    • Update Nimble #955, #965, #982
    • Enable module stability #957
    • [CI] Use norio-nomura/action-swiftlint for running SwiftLint #960
    • Tweak CI #966, #979
    • [SwiftLint] Enable type_name rule #967
    • [SwiftLint] Enable identifier_name rule #968
    • [SwiftLint] Enable function_body_length rule #969
    • [SwiftLint] Enable line_length rule #970
    • bundle update --bundler && bundle update #971
    • Fix test target dependencies #972
    • Separate a test target for the regression test for #853 to mimic the situation in https://github.com/gzafra/QuickCrashTest #973
    • [SwiftLint] Set trailing_comma's mandatory_comma option to true #974
    • [CocoaPods] Use modular headers #977
    • Remove unnecessary TVOS_DEPLOYMENT_TARGET build setting in Quick-iOS target #978
    • [CI] Suppress warnings on SwiftPM tests #981
    • Rename QuickSpecBase module to QuickObjCRuntime for SwiftPM on Darwin #984

    Bugfixes

    • Added empty default flags to xdescribe and xcontext #944 (Thanks @pobengtsson)
    • Fixes race conditions in QuickConfiguration #952 (Thanks @anton-plebanovich)
    • Update the Objective-C QuickSpec template to use modules (semantic import) #953 (Thanks @KeithMorning)
    • Fix to support indirect subclasses of QuickConfiguration #975
    • Fix focus behavior #980

    Documentation Changes

    • Fix typo in Configuration.swift for "Mulitple" #927 (Thanks @denniszxxc)
    • Fix typo in GitHub issue template #930 (Thanks @revolter)
    • Fix typos in Contributing documentation file #931 (Thanks @revolter)
    • Migration swift 4.0 or later for Shared Examples. #946 (Thanks @kanari3)
    • Fix sample code in SharedExamples.md #948
    • Fix Xcode documentation link of how to create xcworkspace #954
    Source code(tar.gz)
    Source code(zip)
  • 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)

    Changes

    • 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

    Bugfixes

    • 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)
    Source code(tar.gz)
    Source code(zip)
  • 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)

    Changes

    • 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
    Source code(tar.gz)
    Source code(zip)
  • 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.

    BREAKING CHANGES

    • Bump requirements #786 #789 (Thanks @ikesyo)
      • Bump MACOSX_DEPLOYMENT_TARGET to 10.10
      • 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)

    Changes

    • 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)

    Bugfixes

    • 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)
    Source code(tar.gz)
    Source code(zip)
  • v1.3.4(Jan 29, 2019)

  • v1.3.3(Jan 28, 2019)

  • v1.3.2(Sep 21, 2018)

  • v1.3.1(Jul 12, 2018)

    Changes

    • Update Nimble to 7.1.3 #807 #808 (Thanks @ikesyo)

    Bugfixes

    • Quick now works with Xcode 10's parallel testing feature #716 #806 (Thanks @haitaoli)
    • Fix CocoaPods integration issue regarding APPLICATION_EXTENSION_API_ONLY build setting #791 (Thanks @ikesyo)
    • Fix unrecognized selector crash on static linking #792 #803 (Thanks @ikesyo)
    Source code(tar.gz)
    Source code(zip)
  • v1.3.0(Apr 20, 2018)

    This release fully supports Xcode 9.3 (both Swift 3.3 and Swift 4.1) and still works with Xcode 8.3 + Swift 3.1! :tada:

    New Features

    • Expose current spec for XCTest expectations #645 (Thanks @pcantrell)
    • Support Xcode 9.3 / Swift 4.1 #761 #765 #778 (Thanks @ikesyo)

    Changes

    • Improve the interoperability with CocoaPods 1.5 Swift Static Libraries support #781 (Thanks @davidahouse)

    Documentation Changes

    • Add Korean translation for Documentation #752 (Thanks @kyeongwan)
    • make Swift snippets for QuickConfiguration compile #754 (Thanks @michaelom)
    • Minor documentation fixes #762 (Thanks @freak4pc)

    Bugfixes

    • Fix XCTest override error on SPM/Swift4 #755 (Thanks @sunshinejr)
    Source code(tar.gz)
    Source code(zip)
  • v1.2.0(Sep 28, 2017)

    This release fully supports Xcode 9 (both Swift 3.2 and Swift 4) and still works with Xcode 8.3 + Swift 3.1! :tada:

    New Features

    • Introduce Behavior<Context> #701 (Thanks @mosamer)
    • Support Xcode 9 / Swift 4 #711, #721, #730, #735 (Thanks @ikesyo, @sharplet)

    Changes

    • Performance improvment for large test suites #697 (Thanks @dbarden)
    • Better conformance to SwiftLint (Thanks @ecylo, @ikesyo, @nasakinmaxim, @wongzigii)

    Documentation Changes

    • Fix japanese document typo #738 (Thanks @AcaiBowl)

    Bugfixes

    • SwiftLint will be executed only on builds for testing #694 (Thanks @nerd0geek1)
    • Fix SwiftPM integration with generated Xcode projects #708 (Thanks @ikesyo)
    • Fix SPM integration #746 (Thanks @sunshinejr)
    Source code(tar.gz)
    Source code(zip)
  • v1.1.0(Feb 9, 2017)

    This release works with Xcode 8.2 + Swift 3.

    New Features

    • Adds `fitBehavesLike to allow focusing of specific instantiations of shared examples (Thanks @wongzigii)
    • Add SwiftPM support on macOS (Thanks @ikesyo)
    • Add Documentation about Shared Examples in Portuguese (Thanks @pedrovereza)

    Changes

    • SharedExampleContext is now [String: Any] instead of NSDictionary (Thanks @devdrey)
    • Better conformance to SwiftLint (Thanks @ikesyo, @wongzigii)

    Bugfixes

    • Quick no longer prints warnings if SwiftLint is not installed (Thanks @wongzigii)
    • Fix bug where Quick didn't work with test bundles with non-c99 valid identifiers (Thanks @MP0w)
    Source code(tar.gz)
    Source code(zip)
  • v1.0.0(Nov 22, 2016)

    Ah, we finally reached 1.0.0! Other than the official christening of a major version, there's mostly smaller code changes from v0.10.0. From here on out, we'll be following semantic versioning rules like Nimble.

    This release is intended to work with Xcode 8.1 / Swift 3.

    Changes

    • Fix bug where test modules with spaces failed to run tests
    • Remove dependency on Nimble for Swift Package Manager

    Documentation Changes

    • Add version table for Quick / Nimble versions to Swift versions in README
    • Update docs for testing with mocks / doubles
    • Update function prototypes for shared examples
    • Update docs for setting up with Xcode
    • Add section about who uses Quick. Feel free to add yourself or add a testimonial!
    • Add shared examples documentation in zh-cn (Chinese)
    • Add behavioral testing in pt-BR (Portuguese)
    • Add README in pt-BR (Portuguese)

    See the documentation directory for a list of languages or contribute one!

    Thanks to @takecian, @ikesyo, @pedrovereza, @CodingItWrong, @istx25, @MP0w, @wongzigii, @rastersize, @marciok and the many contributors leading up to 1.0.0! 👏🏽

    Source code(tar.gz)
    Source code(zip)
  • v0.10.0(Sep 23, 2016)

    This release supports Swift 3.

    Other changes:

    • Improve documentation. Thanks @takecian, @istx25, @wongzigii!
    • Add more documentation in Chinese. Thanks @linshiwei!

    Special Thanks to @ikesyo, @briancroom, @norio-nomura, @knellr, @andersio, @kylef for all the work of getting Quick to work with Swift 3.

    Source code(tar.gz)
    Source code(zip)
  • v0.9.3(Jul 29, 2016)

    This release supports Xcode 8 beta and Swift 2.3.

    Changes:

    • Support Xcode 8 beta and Swift 2.3. Thanks, @ikesyo and @sharplet!
    • Fixed a potential crash, in which a QuickSpec subclass could call +[QuickSpec initialize], thus kicking off an infinite recursion. Thanks, @briancroom!
    • Disables bitcode on tvOS. Thanks, @phatblat!
    Source code(tar.gz)
    Source code(zip)
  • v0.9.2(Apr 10, 2016)

    This release supports Xcode 7.3 and the Swift package manager from DEVELOPMENT-SNAPSHOT-2016-02-08-a.

    Changes:

    • Fixed example spec in doc comment #512, #513. Thanks @muukii & @phatblat!
    • Resolved Swift 2.2 deprecation warnings in Xcode 7.3 #504. Thanks @phatblat!
    • Updated Nimble submodule to 4.0. Thanks @ashfurrow!
    • Reworked suspendObservation #486. Thanks @briancroom!
    • Fixed typo #493. Thanks @pixyzehn!
    • Fixed image URL in docs #457. Thanks @takecian!
    • Fixed afterSuite #488. Thanks @briancroom!
    • Linux update #474. Thanks @briancroom!
    • xctool cleanup #483. Thanks @mokagio!
    • Japanese doc translations #476, #477, #478, #479, #480, #481, #484. Thanks @takecian!
    Source code(tar.gz)
    Source code(zip)
  • v0.9.1(Feb 9, 2016)

    This release supports Xcode 7.2 and the Swift package manager from 2.2-SNAPSHOT-2016-01-11-a.

    Changes:

    Since v0.5.1, Quick displayed incredibly long test names in the Xcode test navigator. Although the names were a little hard to read, they were necessary in order to make sure examples with duplicate names were still run correctly (see the full discussion of the issue here). Now, thanks to @abbeycode, test names are dramatically shorter and easier to read, and Quick still behaves properly even when identical example names are used.

    When two or more examples share the same name, such as "it_is_an_example", Quick now uses test names such as "it_is_an_example", "it_is_an_example_2", "it_is_an_example_3", and so on.

    Source code(tar.gz)
    Source code(zip)
  • v0.9.0(Jan 26, 2016)

    This release supports Xcode 7.2 and the Swift package manager from 2.2-SNAPSHOT-2016-01-11-a.

    Changes:

    • Thanks to @morganchen12 and @jwfriese, Quick now displays more informative error messages when the describe/context/it language is used incorrectly. For example, it("foo") { afterEach {} } will now raise an exception with the message: "'afterEach' cannot be used inside 'it', 'afterEach' may only be used inside 'context' or 'describe'."
    • Thanks to @paulyoung and @briancroom, Quick may now be installed via the Swift package manager. See the Package.swift file file for an example of how to specify a dependency.
    • A nasty issue would cause Quick to fail to execute certain tests after the user ran a specific test via the Xcode test navigator (see https://github.com/Quick/Quick/issues/373 and https://github.com/Quick/Quick/issues/439) for details. Thanks to @sharplet, this issue has been fixed.
    Source code(tar.gz)
    Source code(zip)
  • v0.8.0(Oct 27, 2015)

    This release supports Xcode 7.1 with better tvOS support.

    Changes:

    • tvOS is a separate build target instead of iOS
      • Note that UI Testing Bundles currently doesn't work. We're looking into it.
    • updated import headers to be relative from module-based imports
    Source code(tar.gz)
    Source code(zip)
  • v0.7.0(Oct 18, 2015)

Owner
Quick
The Swift (and Objective-C) testing framework.
Quick
Testing the UI without UI Testing, a Swift experiment.

UI tests without UI Testing experiment This repo is a small experiment to see if there's an "in-between" for testing iOS applications. More feature-le

Joe Masilotti 20 Sep 26, 2022
SwiftCheck is a testing library that automatically generates random data for testing of program properties

SwiftCheck QuickCheck for Swift. For those already familiar with the Haskell library, check out the source. For everybody else, see the Tutorial Playg

TypeLift 1.4k Dec 21, 2022
Remote configuration and A/B Testing framework for iOS

MSActiveConfig v1.0.1 Remote configuration and A/B Testing framework for iOS. Documentation available online. MSActiveConfig at a glance One of the bi

Elevate 78 Jan 13, 2021
T - A simple testing framework using closures and errors

t Quickly test expectations What is t? t is a simple testing framework using clo

OpenBytes 6 Nov 7, 2022
Genything is a framework for random testing of a program properties.

Genything is a framework for random testing of a program properties. It provides way to random data based on simple and complex types.

Just Eat Takeaway.com 25 Jun 13, 2022
AB testing framework for iOS

ABKit Split Testing for Swift. ABKit is a library for implementing a simple Split Test that: Doesn't require an HTTP client written in Pure Swift Inst

Recruit Marketing Partners Co.,Ltd 113 Nov 11, 2022
Keep It Functional - An iOS Functional Testing Framework

IMPORTANT! Even though KIF is used to test your UI, you need to add it to your Unit Test target, not your UI Test target. The magic of KIF is that it

KIF Framework 6.2k Dec 29, 2022
Automatic testing of your Pull Requests on GitHub and BitBucket using Xcode Server. Keep your team productive and safe. Get up and running in minutes. @buildasaur

Buildasaur Automatic testing of your Pull Requests on GitHub and BitBucket using Xcode Server. Keep your team productive and safe. Get up and running

Buildasaurs 774 Dec 11, 2022
Implementing and testing In-App Purchases with StoreKit2 in Xcode 13, Swift 5.5 and iOS 15.

StoreHelper Demo Implementing and testing In-App Purchases with StoreKit2 in Xcode 13, Swift 5.5, iOS 15. See also In-App Purchases with Xcode 12 and

Russell Archer 192 Dec 17, 2022
I built this application with unit testing and test-driven development to understand TDD theory and practice

TestDrivenDevelopment Description I built this application with unit testing and test-driven development to understand TDD theory and practice, to wri

null 1 Dec 21, 2021
A flexible mock server for automated and regression testing of iOS, Android and other apps.

Note: This document is intended as a quick introduction to Voodoo. As Voodoo has a large number of features, please refer to Voodoo's Github Wiki for

Derek Clarkson 7 Nov 23, 2022
A Matcher Framework for Swift and Objective-C

Nimble Use Nimble to express the expected outcomes of Swift or Objective-C expressions. Inspired by Cedar. // Swift expect(1 + 1).to(equal(2)) expect(

Quick 4.6k Dec 31, 2022
Snapshot testing tool for iOS and tvOS

SnapshotTest is a simple view testing tool written completely in Swift to aid with development for Apple platforms. It's like unit testing for views.

Pär Strindevall 44 Sep 29, 2022
UI Testing Cheat Sheet and Examples.

UI Testing Cheat Sheet This repository is complementary code for my post, UI Testing Cheat Sheet and Examples. The post goes into more detail with exa

Joe Masilotti 2.1k Dec 25, 2022
A Mac and iOS Playgrounds Unit Testing library based on Nimble.

Spry Spry is a Swift Playgrounds Unit Testing library based on Nimble. The best thing about Spry is that the API matches Nimble perfectly. Which means

Quick 327 Jul 24, 2022
Multivariate & A/B Testing for iOS and Mac

This library is no longer being maintained. You can continue to use SkyLab in your projects, but we recommend switching another solution whenever you

Mattt 792 Dec 15, 2022
Runtime introspection and unit testing of SwiftUI views

ViewInspector ??️‍♂️ for SwiftUI ViewInspector is a library for unit testing SwiftUI views. It allows for traversing a view hierarchy at runtime provi

Alexey Naumov 1.5k Jan 8, 2023
Swifty tool for visual testing iPhone and iPad apps. Every pixel counts.

Cribble Cribble - a tool for visual testing iPhone and iPad apps. Every pixel counts. Getting Started An example app is included demonstrating Cribble

Max Sokolov 273 Nov 4, 2022
Sample project for testing out focus in SwiftUI and iOS 15

This project was to test out different ways of enabling focus in a SwiftUI app.

null 3 Dec 21, 2021