kylef/spectre
[*Sp*ecial *E*xecutive for *C*ommand-line *T*est *R*unning and
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 testStandard
The standard reporter produces output as follows:
Passing Tests
[Standard Reporter Success]
Failing Tests
[Standard Reporter Failure]
Dot
Using the -t argument, you can use the dot reporter.
Passing Tests
[Dot Reporter Success]
Failing Tests
[Dot Reporter Failure]
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:
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]
Package Metadata
Repository: kylef/spectre
Default branch: master
README: README.md