読者です 読者をやめる 読者になる 読者になる

FBSnapshotTestCase使ってみた

あけましておめでとうございます。
世間は正月ですが、久しぶりのまとまった休みですので、
自宅で試したかったライブラリ読んだり、書きたかったコード書いたりしています。
こんな世捨て人みたいな感じですが、今年もよろしくお願いします。

昨日、今日と以下の記事を読んで、実際に個人のプロジェクトに導入してみました。 FBSnapshotTestCaseでUIViewの描画をテストする

詳細については元記事のほうでよくまとまっているので、こちらでは感想のみを書いていこうと思います。

長所

  • UI系のテストを簡単に導入でき、また結果の確認についても簡単にできる点が優れている。
  • Reference Imageを作成する必要がない(実装済のViewから生成できる)点もエンジニアが使う上では良い。

実際に導入してみた感想としては、想像を遥かに上回る簡単さで結果もわかりやすく、
何よりReference Imageが自動生成される点がエンジニア向きだと感じました。
ただし、CIに組み込もうとしたところ、以下のような問題点もありました。

問題点

- iOS8でのReference Imageの作成に失敗するケースがある (最新版のXcode6.1.1, FBSnapshotTestCase1.4ではiPhone6 plus以外でiOS8のReference Imageが作成できない)。

そのため、
- iPhone4s(iOS7.x)
- iPhone5s(iOS7.x)
- iPhone6 plus(iOS8.x)
という画面サイズ・iOSバージョンのテストについては自動化できたのですが、 iPhone6については自動化できないという問題があり、その点だけが残念だと感じました。

FBSnapshotTestCase1.4をそのまま使おうとすると、上記のようにiOS8においてReference Imageが作成できない問題があったのですが、 こちらのissueにおいて言及されているように、setupに以下の一行を追加すると、正常に動作することが確認できたため、CIに組み込んでも使えるレベルだと感じました。

self.renderAsLayer = YES;

なので、ガンガン導入すべきだと思います。