Popularity
5.0
Growing
Activity
4.2
Declining
379
14
37

Code Quality Rank: L2
Programming language: Swift
License: BSD 2-clause "Simplified" License
Tags: Testing    
Latest version: v0.10.1

Spectre alternatives and similar libraries

Based on the "Testing" category.
Alternatively, view Spectre alternatives based on common mentions on social networks and blogs.

Do you think we are missing an alternative of Spectre or a related project?

Add another 'Testing' Library

README

Spectre

Build Status

*Sp*ecial *E*xecutive for *C*ommand-line *T*est *R*unning and *E*xecution.

A behavior-driven development (BDD) framework and test runner for Swift projects and playgrounds. It's compatible with both OS X and Linux.

Usage

describe("a person") {
  let person = Person(name: "Kyle")

  $0.it("has a name") {
    try expect(person.name) == "Kyle"
  }

  $0.it("returns the name as description") {
    try expect(person.description) == "Kyle"
  }
}

Reporters

Spectre currently has two built-in reporters, Standard and the Dot reporter. Custom reporters are supported, make a type that conforms to Reporter.

The default reporter can be configured via an environment variable. For example:

$ env SPECTRE_REPORTER=dot swift test
$ env SPECTRE_REPORTER=tap swift test

Standard

The standard reporter produces output as follows:

Passing Tests

[Standard Reporter Success](Screenshots/success.png)

Failing Tests

[Standard Reporter Failure](Screenshots/failure.png)

Dot

Using the -t argument, you can use the dot reporter.

Passing Tests

[Dot Reporter Success](Screenshots/success-dot.png)

Failing Tests

[Dot Reporter Failure](Screenshots/failure-dot.png)

Expectation

Equivalence

try expect(name) == "Kyle"
try expect(name) != "Kyle"

Truthiness

try expect(alive).to.beTrue()
try expect(alive).to.beFalse()
try expect(alive).to.beNil()

Error handling

try expect(try write()).toThrow()
try expect(try write()).toThrow(FileError.NoPermission)

Comparable

try expect(5) > 2
try expect(5) >= 2
try expect(5) < 10
try expect(5) <= 10

Types

try expect("kyle").to.beOfType(String.self)

Causing a failure

throw failure("Everything is broken.")

Custom assertions

You can easily provide your own assertions, you just need to throw a failure when the assertion does not meet expectaions.

Examples

The following projects use Spectre:

Installation / Running

Swift Package Manager

Check out Commander as an example.

Playground

You can use Spectre in an Xcode Playground, open Spectre.playground in this repository, failures are printed in the console.

[Spectre in an Xcode Playground](Screenshots/Playground.png)