[Swift] Quick で振る舞いテストをしてみよう

2014.09.18

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

Quick

quick

「Quick」は Swift / Objective-C で利用できるテスティングフレームワークです。RSpecSpectaGinkgo などといった Spec 系統のフレームワークをインスパイヤしており、これらと同様の形式でテストケースを記述できます。

import Quick
import Nimble

class TableOfContentsSpec: QuickSpec {
  override func spec() {
    describe("the table of contents below") {
      it("has everything you need to get started") {
        let sections = TableOfContents().sections
        expect(sections).to(contain("Quick: Examples and Example Groups"))
        expect(sections).to(contain("Nimble: Assertions using expect(...).to"))
        expect(sections).to(contain("How to Install Quick"))
      }
      context("if it doesn't have what you're looking for") {
        it("needs to be updated") {
          let you = You(awesome: true)
          expect{you.submittedAnIssue}.toEventually(beTruthy())
        }
      }
    }
  }
}

本稿では、Swift 製のアプリのテストを Quick を使って行う方法を解説します。

Quick のインストール

まずは Quick のインストールです。Quick を使うにはテストケースの構成を作る Quick と、テストケース内の値を比較するマッチャーである Nimble が必要です。なお現在は CocoaPods では利用できないので、自分で clone してくる必要があります。

git clone git@github.com:Quick/Quick.git
git clone git@github.com:Quick/Nimble.git

ローカルに clone してきたら、次にテストプロジェクトに Quick.xcodeprojNimble.xcodeproj を追加します。

最後に、プロジェクトの Link Binary with LibrariesQuick.xcodeprojNimble.xcodeproj をぞれぞれ追加します。

quick02-v2

以上でインストール完了です。テストプロジェクトで Quick と Nimble が利用できるようになりました。

なお、上記の方法だとバージョンを固定してしまうので、最新バージョンを追っていきたい場合は submodule 化しておくと良いでしょう。

git submodule add git@github.com:Quick/Quick.git
git submodule add git@github.com:Quick/Nimble.git
git submodule update --init --recursive

テストケースの記述

まずは簡単な例から試してみたいと思います。プロジェクト作成時に作られる SampleTests.swiftSampleSpec.swift に変更し、内容を以下のように書き換えてください。

import Quick
import Nimble

class SampleSpec: QuickSpec {
    override func spec() {
        it("is equal") {
            let value = 2 + 3
            expect(value).to(equal(5))
        }
    }
}

解説します。まず QuickSpec クラスのサブクラスを作り、spec() メソッドをオーバーライドします。これがテストケースを実行する上で最低限必要です。

次に spec() メソッド内にテストケースを書いていきます。上記例で書いている it() は1つのテストケースを作るためのメソッドで、この {} の中に記述している内容が1つのテストケースで実行される内容です。ここでは単純に 2 + 3 の結果が 5 であるというテストを実行しています。

それではテストを実行してみましょう。メニューから実行することもできますが、一番簡単な方法は Command + U ショートカットを利用する方法です。当然 Succeeded になるはずです。

quick03-v2

まとめ

今回は Quick の概要とインストール方法、そして簡単にテストケースを書いてみるところまで解説しました。テストケースをかなり分かりやすく記述できることがご理解いただけたかと思います。

テストケースは分かりやすさが大事だと思います。なぜなら、場合によってはプロジェクトリーダーやマネージャーなどプログラマ以外の関係者も読む機会があるからです。テストケースが読めると「どのくらい実装が進んでいるか」「要件にズレはないか」「カバレッジは低くないか」といったようなプロジェクトの進捗が把握しやすくなります。そういった面では Swift は触れやすい言語ですし、きっとこれまでより読みやすく分かりやすいテストケースが書けるはずです。

次回は Quick でテストケースを構成していく方法について解説します。

参考