Swiftのテストライブラリ「Quick」のセットアップ方法


「Quick」とは?

テストとテストグループの文法を提供するライブラリです。

RSpec, Specta, Ginkgoにインスパイアされているので、これらでテストを書いたことがある方はとっつきやすいと思います。
私はどれも使ったことがないので詳しくはわかりません。

「Nimble」とは?

アサーションの文法を提供するライブラリです。

QuickとNimbleは片方のみ導入することもできます。

Quick導入のメリデメ

標準のXCTestと比べ、以下のメリット・デメリットがあります。

メリット

可読性が高い
テスト対象クラスやメソッドをdescribeに、条件をcontextに、期待する動作をitに書く、と決まっているので、テストを書くときにあまり迷わず、他人が書いたテストコードを読むときも読みやすいです。

アサーションが書きやすい
アサーションを直感的に記述することができます。

// XCTest
XCTAssertEqual(foo.count, 3)

// Nimble
expect(foo.count) == 3

失敗時のエラーメッセージがわかりやすい
テスト失敗時のエラーメッセージが自動でわかりやすく出力されます。
エラーメッセージを手動で記述する必要がほぼありません。

デメリット

ネストが深くなる
class , spec , describe , context , it の5つはQuickでほぼ必須なので、最低でも5ネストになります。
describe などを2つ以上使う場合、それ以上にネストします。
インデントを4→2文字にするのもありかもしれません。

行番号をクリックしてテストメソッド単体でテストできない
XCTestだとテストメソッドごとに行番号をクリックするとそのメソッドのみテストできます。
しかし、Quickだとitの横にテスト実行ボタンが表示されないので、テストファイルからテストメソッド単体で実行することができません。

環境

  • Swift:4.2.1
  • Xcode:10.1 (10B61)
  • Quick:2.0.0
  • Nimble:8.0.1

ライブラリのセットアップ

Cartfileに以下を追加し、Carthageからインストールします。

Cartfile
+ github "Quick/Quick"
+ github "Quick/Nimble"

製品ターゲットでなく テストターゲット に追加する以外は他のライブラリと同様です。
https://qiita.com/uhooi/items/ba20a604182ef25f6d7a#carthageのセットアップ

テンプレートのインストール

ターミナルで以下を実行し、XcodeにQuickのテンプレートをインストールします。

$ git clone https://github.com/Quick/Quick.git
$ cd Quick/
$ rake templates:install

公式ドキュメントにはAlcatrazによるインストール方法も記載されていますが、Xcode 8以降はサポートされていないため、Rakefileから手動でインストールするのがベターです。

参考リンク