はじめに
UIレイヤーまでユニットテストを入れているオープンソースアプリ/フレームワーク/ライブラリです。
商用レベルなiOSオープンソースアプリ集と一部被りますが列挙してみました。
2019年現在、UIが絡まないかつテストコードがないOSSフレームワーク/ライブラリはほとんどないので入れてません。。。
Wire iOS(GitHub) (App Store)
検証方法&フレームワーク:スナップショット、Viewのプロパティを検証
TwitterKit(GitHub)
検証方法&フレームワーク:OCMock、Viewのプロパティを検証
FireFox(GitHub) (App Store)
検証方法&フレームワーク:EarlGrey, KIF, スナップショット
Kickstarter(GitHub) (App Store)
検証方法&フレームワーク:MVVM、スナップショット
SpreadsheetView(GitHub)
検証方法&フレームワーク:?
まとめ
- この中で普通レベルの開発組織で取り入れやすいのはWire iOS、Twitter Kit、Artsy(BDD Frameworkはお好みで)
- ほとんどのアプリのアーキテクチャはMVC。さわって学べる!iOSテスト駆動開発の作者が関わっているプロダクトも10人体制/MVC+DIで回している。
- 検証方法はスナップショットが多い
- テストが用意なアーキテクチャ(MVVM+リアクティブプログラミング)を採用しているアプリはKickstarterのみで、後はView毎を巻き込んでゴリ押し
- UIテスト用フレームワークを採用しているアプリはFireFoxのみ
というわけで、純粋なMVCでもUIのユニットテストは十分可能。
参考文献/スライド
App Architecture: iOS Application Design Patterns in Swift
iOS Code Testing: Test-Driven Development and Behavior-Driven Development with Swift (English Edition)
さわって学べる!iOSテスト駆動開発
Viewのテストどうしてますか?
Snapshot Testing in iOS