Help us understand the problem. What is going on with this article?

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

More than 5 years have passed since last update.

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

この連載について

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

susieyy
フリーランス - スタートアップエンジニアリングアドバイザー - iOS技術顧問 - プロトタイプ開発
https://susieyy.com
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした