Spectre
Special Executive for Command-line Test Running and Execution.
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
.
- Standard
- Dot Reporter (
-t
) - Tap Reporter (
--tap)
- Test Anything Protocol-compatible output
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
Failing Tests
Dot
Using the -t
argument, you can use the dot reporter.
Passing Tests
Failing Tests
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.