フレームワーク Quick/Nimble
Quick/Nimbleは XCTest 上で動く OSSのBDD(Behavior Driven Deployment)、Assertionフレームワーク。
BDDフレームワークとしての Quick
、MatcherによるAssertionを実行する Nimble
から成り立つ。
Quick とは
BDDスタイルでテストコードを記述できるテストフレームワーク。より要求仕様に近い形でテストコードを表現んすることに主眼をおいたもの。
以下のコードでこのような振る舞いが把握できる。
isEmptyは ・0文字以上の時 trueを返すこと ・1文字以上の時 falseを返すこと
■ 対象のコード
class StringSpec: QuickSpec { override func spec() { describe("isEmpty") { context("0文字以上") { it("trueであること") { XCTAssertTrue("".isEmpty) } } context("1文字以上") { it("falseであること") { XCTAssertFalse("a".isEmpty) } } } } }
Nimble とは
Matcher API による Assertion を提供する。内部では XCTAssert が実行されるが、Matcher API をりようすると以下のような利点がある。
- 複雑なAssertionを簡単に描ける
- 目視したときに意図が伝わりやすい
- テスト失敗時のエラーメッセージがわかりやすくなる
let arr = [0, 1, 2] expect(arr).to(contain(4))
上記テストの失敗メッセージ
=> expected to contain <4>, got <[0, 1, 2]>
このように Nimble では自然な英文のようにテストコードを記述でき、かつエラーメッセージもわかりやすい。