Upgrade to Pro — share decks privately, control downloads, hide ads and more …

モックフレームワーク比較 / Mocking Framework Comparison

モックフレームワーク比較 / Mocking Framework Comparison

8ab71237da39f6b1ec47da53f33c3ec8?s=128

Jierong Li

August 20, 2020
Tweet

Transcript

  1. YUMEMI.swift #9 モックフレームワーク⽐較 適切なツールを使いテストを楽にしよう

  2. Jierong Li (李) • 株式会社ゆめみ • iOSエンジニア • 趣味でAndroidとFlutter開発 •

    永遠にリリースできず個⼈開発 • https://jierong.dev ⾃⼰紹介
  3. • ⼊⼿しにくい(できない) • テストで使いたい結果を返さな い • 実⾏に時間がかかるなどの、望 ましくない副作⽤がある • 出⼒を検証しにくい(できな

    い) なぜモック
  4. ⽐較するフレームワーク ステータス ⭐ 初回リリース⽇ バージョン Mockolo 288 2019年9⽉ 1.2.4 Cuckoo

    1.3k 2016年1⽉ 1.4.1 Mockingbird 211 2019年8⽉ 0.14.1
  5. ⽐較するフレームワーク 分類 • ⾃作⾵ • Mockolo • Mockito⾵ • Cuckoo

    • Mockingbird
  6. Mockolo ⾃作⾵ • 単純なコード⽣成 • 導⼊簡単 • 取り除きも簡単 • 機能不⾜

  7. Cuckoo・Mockingbird Mockito⾵

  8. ソース指定 • Mockolo:ディレクトリー/ファイル+サフィックス排除+ノーテーション • Cuckoo:ファイル/グロブ(gub)パターン • Mockingbird:ターゲット+個別排排除 • 共通: f

    i nal class
  9. ソース指定 Mockolo • --sourcedirs • --source f i les •

    --exclude-su f f i xes • --annotation
  10. ソース指定 Cuckoo • ファイルベース • --glob • *、?、などのワイルドカードでファイル名のセットを指定

  11. ソース指定 Mockingbird • --targets • .mockingbird-ignore • 対策 • ⽣成スピード:キャッシュ

    • ビルドスピード:Thunk Stubs
  12. • 暗黙的にデフォルト実装が使わ れ、無効なテストが作る恐れが ある • ないとテストで実⾏されるとこ ろ全部スタブする必要がある デフォルト実装

  13. スタブシーケンス

  14. 引数チェック 実装

  15. 引数チェック テスト

  16. 実⾏順番

  17. 予想外のコール 余計なことしないのも⼤事

  18. まとめ Mockolo Cuckoo Mockingbird 依存性 低い ⾼い ⾼い ソース指定 ホワイトリスト

    ホワイトリスト ブラックリスト デフォルト実装 デフォルトオン デフォルトオフ デフォルトオフ スタブシーケンス × ◦ ◦ 引数チェック △ ◦ ◦ 実⾏順番 × × ◦ 予想外のコール × ◦ △ Objective-C サポート × ◦ × 既存問題 ? 2+件 ?
  19. 既存問題 Cuckoo

  20. Thanks!

  21. 参考 • Mockolo • Cuckoo • Mockingbird • テストダブル -

    Wikipedia • グロブ - Wikipedia