モックフレームワーク比較 / Mocking Framework Comparison
by
Jierong Li
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
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