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, simply make a type that conforms to Reporter.
- Standard
- Dot Reporter (
-t) - Tap Reporter (
--tap)- Test Anything Protocol-compatible output
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) <= 10Types
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:
| Project | CI |
|---|---|
| Stencil | |
| Inquiline | |
| CardKit | N/A |
Installation / Running
SPM
Check out spectre-build.
Conche
Conche build system has integrated support
for Spectre. You can simply add a test_spec to your Conche podspec depending
on Spectre and it will run your tests with conche test.
Playground
You can use Spectre in an Xcode Playground, open Spectre.playground in
this repository, failures are printed in the console.
Manually
You can build Spectre as a Framework or a library and link against it.
For example, if you clone Spectre and run make it will build a library you
can link against:
$ swiftc -I .conche/modules -L .conche/lib -lSpectre -o runner myTests.swift
$ ./runner



