520
517

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Swift界隈で話題沸騰中のテストフレームワーク Quick とは?

Posted at

Quickとは?

QuickSwiftが発表された2日後にGithubにコミットされた、世界で一番最初のSwiftのテストフレームワークです。ビヘイビア駆動開発(BDD)指向のテストフレームワークで、SwiftObjective-Cの両方の言語に対応しています。RSpec, Specta, Ginkgoの影響を受けているそうで、記述がしやすく可読性の高いケースを表現できるのが特徴です。

modocache_Quick.jpg
ロゴもSwift調のデザインで素敵です。

開発者は?

開発者はmodocache (もどかしい)さんという日本にいらっしゃるエンジニアさんが作られています。ハンドルネームがとってもお洒落ですね。

modocache__Brian_Gesiak_.jpg

期待度は?

まだ開発開始から2週間弱ですが、とても活発に開発が行われており今後Swiftのデファクトテストフレームワークになるのではと期待が寄せらています。

また既存のObjCテストフレームワーク(※)はSwiftに対応されておらず、ファンクショナルマクロを駆使して作られているので、ファンクショナルマクロに対応していないSwiftへの対応は難しいいそうです。

(※) ObjCテストフレームワーク

  • Kiwi BDD for iOS
  • Specta A light-weight TDD / BDD framework for Objective-C & Cocoa
  • GHUnit Test Framework for Objective-C
  • XCUnit XCode default

ちなみに、modocache (もどかしい)さんはKiwiのコミッターでもあります。

QuickGithubSwift Weakly Trendingの上位に位置しており世界的にも注目を集めています。

Trending_Swift_repositories_on_GitHub_this_week.jpg

利用者は?

公開されているプロジェクトであればRxSwiftで検討されているようです。RxSwiftリアクティブプログラミングを行えるようにするライブラリです。

テストコードはどんな感じ?

READMEより拝借。
Swiftで記述すると、まるでRSpecのように流れるがごとく美しく記述できます。テストを書くのが楽しくなることうけ合いです。

// Swift

import Quick

class DolphinSpec: QuickSpec {
    override func exampleGroups() {
        describe("a dolphin") {
            describe("its click") {
                it("is loud") {
                    let click = Dolphin().click()
                    expect(click.isLoud).to.beTrue()
                }

                it("has a high frequency") {
                    let click = Dolphin().click()
                    expect(click.hasHighFrequency).to.beTrue()
                }
            }
        }
    }
}
// Objective-C

#import <Quick/Quick.h>

QuickSpecBegin(DolphinSpec)

qck_describe(@"a dolphin", ^{
    qck_describe(@"its click", ^{
        qck_it(@"is loud", ^{
            Click *click = [[Dolphin new] click];
            XCTAssertTrue(click.isLoud, @"expected dolphin click to be loud");
        });

        qck_it(@"has a high frequency", ^{
            Click *click = [[Dolphin new] click];
            XCTAssertTrue(click.hasHighFrequency,
                @"expected dolphin click to have a high frequency");
        });
    });
});

Xcode上でエラー箇所や、テストの合否も確認できます。素晴らしい!
687474703a2f2f662e636c2e6c792f6974656d732f32463336326b32453366307532523070337131632f53637265656e25323053686f74253230323031342d30362d31342532306174253230382e31362e3232253230504d2e706e67.png

この連載について

今後はインストール方法や、テストの記述方法などを投稿していきたいです。

520
517
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
520
517

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?