モックフレームワーク比較 / Mocking Framework Comparison
by
Jierong Li
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
YUMEMI.swift #9 モックフレームワーク⽐較 適切なツールを使いテストを楽にしよう
Slide 2
Slide 2 text
Jierong Li (李) • 株式会社ゆめみ • iOSエンジニア • 趣味でAndroidとFlutter開発 • 永遠にリリースできず個⼈開発 • https://jierong.dev ⾃⼰紹介
Slide 3
Slide 3 text
• ⼊⼿しにくい(できない) • テストで使いたい結果を返さな い • 実⾏に時間がかかるなどの、望 ましくない副作⽤がある • 出⼒を検証しにくい(できな い) なぜモック
Slide 4
Slide 4 text
⽐較するフレームワーク ステータス ⭐ 初回リリース⽇ バージョン Mockolo 288 2019年9⽉ 1.2.4 Cuckoo 1.3k 2016年1⽉ 1.4.1 Mockingbird 211 2019年8⽉ 0.14.1
Slide 5
Slide 5 text
⽐較するフレームワーク 分類 • ⾃作⾵ • Mockolo • Mockito⾵ • Cuckoo • Mockingbird
Slide 6
Slide 6 text
Mockolo ⾃作⾵ • 単純なコード⽣成 • 導⼊簡単 • 取り除きも簡単 • 機能不⾜
Slide 7
Slide 7 text
Cuckoo・Mockingbird Mockito⾵
Slide 8
Slide 8 text
ソース指定 • Mockolo:ディレクトリー/ファイル+サフィックス排除+ノーテーション • Cuckoo:ファイル/グロブ(gub)パターン • Mockingbird:ターゲット+個別排排除 • 共通: f i nal class
Slide 9
Slide 9 text
ソース指定 Mockolo • --sourcedirs • --source f i les • --exclude-su f f i xes • --annotation
Slide 10
Slide 10 text
ソース指定 Cuckoo • ファイルベース • --glob • *、?、などのワイルドカードでファイル名のセットを指定
Slide 11
Slide 11 text
ソース指定 Mockingbird • --targets • .mockingbird-ignore • 対策 • ⽣成スピード:キャッシュ • ビルドスピード:Thunk Stubs
Slide 12
Slide 12 text
• 暗黙的にデフォルト実装が使わ れ、無効なテストが作る恐れが ある • ないとテストで実⾏されるとこ ろ全部スタブする必要がある デフォルト実装
Slide 13
Slide 13 text
スタブシーケンス
Slide 14
Slide 14 text
引数チェック 実装
Slide 15
Slide 15 text
引数チェック テスト
Slide 16
Slide 16 text
実⾏順番
Slide 17
Slide 17 text
予想外のコール 余計なことしないのも⼤事
Slide 18
Slide 18 text
まとめ Mockolo Cuckoo Mockingbird 依存性 低い ⾼い ⾼い ソース指定 ホワイトリスト ホワイトリスト ブラックリスト デフォルト実装 デフォルトオン デフォルトオフ デフォルトオフ スタブシーケンス × ○ ○ 引数チェック △ ○ ○ 実⾏順番 × × ○ 予想外のコール × ○ △ Objective-C サポート × ○ × 既存問題 ? 2+件 ?
Slide 19
Slide 19 text
既存問題 Cuckoo
Slide 20
Slide 20 text
Thanks!
Slide 21
Slide 21 text
参考 • Mockolo • Cuckoo • Mockingbird • テストダブル - Wikipedia • グロブ - Wikipedia